Share via


Tutorial: Verknüpfen von Daten aus mehreren Tabellen

Das Verknüpfen von Daten aus mehreren Tabellen ermöglicht eine umfassendere Analyse, indem Informationen aus verschiedenen Quellen kombiniert und neue Beziehungen zwischen Datenpunkten erstellt werden. In der Kusto-Abfragesprache (KQL) werden die Join- und Nachschlageoperatoren verwendet, um Daten tabellenübergreifend zu kombinieren.

In diesem Tutorial lernen Sie Folgendes:

In den Beispielen in diesem Tutorial wird der öffentlich verfügbare Hilfecluster verwendet. Um mit Ihren eigenen Daten zu erkunden, erstellen Sie Ihren eigenen kostenlosen Cluster.

Voraussetzungen

  • Ein Microsoft-Konto oder Microsoft Entra Benutzeridentität für die Anmeldung beim Hilfecluster

Verwenden des Verknüpfungsoperators

Es gibt zwei Tabellen in der Beispieldatenbank , die sich auf Sturmereignisse beziehen. Einer wird aufgerufen StormEvents , und der andere heißt PopulationData. In diesem Abschnitt fügen Sie die Tabellen zusammen, um Datenanalysen durchzuführen, die mit einer einzigen Tabelle nicht möglich wären.

Grundlegendes zu den Daten

Verwenden Sie den Take-Operator , um zu ermitteln, welche Daten jede Tabelle enthält.

StormEvents 
| take 5

Die folgende Tabelle zeigt nur 6 der 22 zurückgegebenen Spalten.

StartTime EndTime EpisodeId EventId State EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Sturm ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Sturm ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTIC SOUTH Wasserhose ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Starker Regen ...
PopulationData 
| take 5

Ausgabe

State Auffüllung
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFORNIA 39562900

Beide Tabellen enthalten eine State Spalte. Die StormEvents Tabelle enthält viele weitere Spalten, und die PopulationData hat nur eine weitere Spalte, die die Auffüllung des angegebenen Zustands enthält.

Verknüpfen der Tabellen

Fügen Sie die PopulationData Tabelle mit StormEvents in der gemeinsamen State Spalte zusammen, um den gesamt durch Stürme verursachten Sachschaden pro Kopf nach Staat zu ermitteln.

StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita

Fügen Sie | render columnchart der Abfrage hinzu, um das Ergebnis zu visualisieren.

Screenshot: Säulendiagramm mit Sachschäden pro Kopf nach Staat

Tipp

Es gibt viele Arten von Joins, die Sie mit dem join Operator ausführen können. Sehen Sie sich eine Liste der Join-Varianten an.

Verwenden des Nachschlageoperators

Der Nachschlageoperator optimiert die Leistung von Abfragen, bei denen eine Faktentabelle mit Daten aus einer Dimensionstabelle angereichert ist. Er erweitert die Faktentabelle um Werte, die in einer Dimensionstabelle nachgeschlagen werden. Für eine optimale Leistung geht das System standardmäßig davon aus, dass die linke Tabelle die größere Faktentabelle und die rechte Tabelle die kleinere Dimensionstabelle ist. Dies ist das genaue Gegenteil zu der Annahme, die vom join-Operator verwendet wird.

Im Hilfecluster gibt es eine andere Datenbank namens ContosoSales , die Verkaufsdaten enthält. Die folgende Abfrage verwendet lookup , um die SalesFact Tabellen und Products aus dieser Datenbank zusammenzuführen, um den Gesamtumsatz nach Produktkategorie abzurufen.

SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc

Ausgabe

ProductCategoryName TotalSales
Games and Toys 966782
Fernsehen und Videorekorder 715024
Cameras and camcorders 323003
Computer 313487
Home Appliances 237508
Audio 192671
Cell phones 50342
Music, Movies and Audio Books 33376

Hinweis

Der lookup Operator unterstützt nur zwei Join-Varianten: leftouter und inner.

Verknüpfen von abfragegenerierten Tabellen

Joins können auch basierend auf Abfrageergebnissen aus derselben Tabelle durchgeführt werden.

Angenommen, Sie möchten eine Liste von Zuständen erstellen, in denen sowohl Blitzereignisse als auch Lawinenereignisse aufgetreten sind. Verwenden Sie den Joinoperator, um die Zeilen von zwei Tabellen – eine mit Daten zu Blitzereignissen und die andere mit Daten zu Lawinenereignissen – basierend auf der State Spalte zusammenzuführen.

StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
    StormEvents 
    | where EventType == "Avalanche"
    | distinct State
    )
    on State
| project State

Ausgabe

State
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA