Share via


Zelfstudie: Gegevens uit meerdere tabellen samenvoegen

Het samenvoegen van gegevens uit meerdere tabellen maakt een uitgebreidere analyse mogelijk door informatie uit verschillende bronnen te combineren en nieuwe relaties tussen gegevenspunten te creëren. In de Kusto-querytaal (KQL) worden de join- en opzoekoperators gebruikt om gegevens in tabellen te combineren.

In deze zelfstudie leert u het volgende:

In de voorbeelden in deze zelfstudie wordt het openbaar beschikbare Help-cluster gebruikt. Als u wilt verkennen met uw eigen gegevens, maakt u uw eigen gratis cluster.

Vereisten

  • Een Microsoft-account of Microsoft Entra gebruikersidentiteit om u aan te melden bij het Help-cluster

De join-operator gebruiken

Er zijn twee tabellen in de database Voorbeelden met betrekking tot storm-gebeurtenissen. De ene heet StormEvents en de andere heet PopulationData. In deze sectie gaat u de tabellen samenvoegen om gegevensanalyses uit te voeren die niet met één tabel alleen mogelijk zijn.

De gegevens begrijpen

Gebruik de take-operator om te zien welke gegevens elke tabel bevat.

StormEvents 
| take 5

In de volgende tabel worden slechts 6 van de 22 geretourneerde kolommen weergegeven.

StartTime EndTime EpisodeId Eventid Staat 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 Onweerswind ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIË Onweerswind ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTISCHE ZUID Waterspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Zware regen ...
PopulationData 
| take 5

Uitvoer

Staat Aantal inwoners
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFORNIË 39562900

Beide tabellen bevatten een State kolom. De StormEvents tabel bevat nog veel meer kolommen en de PopulationData bevat slechts één andere kolom die de populatie van de opgegeven status bevat.

De tabellen samenvoegen

Voeg de PopulationData tabel samen met StormEvents in de gemeenschappelijke State kolom om de totale materiële schade te vinden die wordt veroorzaakt door stormen per hoofd van de staat.

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

Voeg toe | render columnchart aan de query om het resultaat te visualiseren.

Schermopname van kolomdiagram met materiële schade per hoofd van de bevolking per staat.

Tip

Er zijn veel soorten joins die u met de join operator kunt uitvoeren. Bekijk een lijst met join-varianten.

De opzoekoperator gebruiken

De opzoekoperator optimaliseert de prestaties van query's waarbij een feitentabel is verrijkt met gegevens uit een dimensietabel. De feitentabel wordt uitgebreid met waarden die worden opgezoekd in een dimensietabel. Voor de beste prestaties gaat het systeem er standaard van uit dat de linkertabel de grotere feitentabel is en de rechtertabel de kleinere dimensietabel. Dit is precies het tegenovergestelde van de veronderstelling die door de join operator wordt gebruikt.

In het Help-cluster bevindt zich een andere database met de naam ContosoSales die verkoopgegevens bevat. De volgende query gebruikt lookup om de SalesFact tabellen en Products uit deze database samen te voegen om de totale verkoop per productcategorie op te halen.

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

Uitvoer

ProductCategoryName TotalSales
Games en speelgoed 966782
Tv en video 715024
Camera's en camcorders 323003
Computers 313487
Huishoudelijke apparaten 237508
Audio 192671
Mobiele telefoons 50342
Muziek, films en audioboeken 33376

Notitie

De lookup operator ondersteunt slechts twee join-varianten: leftouter en inner.

Door query's gegenereerde tabellen koppelen

Joins kunnen ook worden uitgevoerd op basis van queryresultaten uit dezelfde tabel.

Stel dat u een lijst wilt maken met statussen waarin zowel bliksem- als lawinegebeurtenissen hebben plaatsgevonden. Gebruik de join-operator om de rijen van twee tabellen samen te voegen, een met gegevens over bliksemschichten en de andere met gegevens over lawine-gebeurtenissen, op basis van de State kolom.

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

Uitvoer

Staat
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA