Delen via


Zelfstudie: Gegevens uit meerdere tabellen samenvoegen

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

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 maken. In de Kusto Query Language (KQL)worden de operators join en lookup gebruikt om gegevens in verschillende tabellen te combineren.

In deze zelfstudie leert u het volgende:

In de voorbeelden in deze zelfstudie wordt gebruikgemaakt van de StormEvents tabel, die openbaar beschikbaar is in de helpcluster. Als u wilt verkennen met uw eigen gegevens, u uw eigen gratis clustermaken.

In de voorbeelden in deze tutorial wordt de StormEvents tabel gebruikt, die openbaar beschikbaar is in de Weather Analyticsvoorbeeldgegevens.

Voorwaarden

Als u de volgende query's wilt uitvoeren, hebt u een queryomgeving nodig met toegang tot de voorbeeldgegevens. U kunt een van de volgende opties gebruiken:

  • Een Microsoft-account of Microsoft Entra-gebruikersidentiteit om u aan te melden bij het Help-cluster
  • Een Microsoft-account of Microsoft Entra-gebruikersidentiteit
  • Een Fabric-werkruimte met een Microsoft Fabric-ingeschakelde capaciteit

De join-operator gebruiken

Er zijn twee tabellen in de database Samples gerelateerd aan storm-gebeurtenissen. De ene wordt StormEvents genoemd en de andere wordt PopulationDatagenoemd. In deze sectie voegt u de tabellen samen om gegevensanalyse uit te voeren die niet mogelijk is met één tabel alleen.

Inzicht in de gegevens

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

StormEvents 
| take 5

In de volgende tabel ziet u slechts 6 van de 22 geretourneerde kolommen.

Starttijd Eindtijd EpisodeId EventId Staat Type gebeurtenis ...
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 Onweer wind ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIË Onweer wind ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTISCHE ZUID Waterhoos ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Zware regen ...
PopulationData 
| take 5

uitvoer

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

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

De tabellen samenvoegen

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

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

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

Schermopname van kolomdiagram waarin de eigendomsschade per hoofd van de bevolking per staat wordt getoond.

Als de kolommen verschillende namen hebben, bijvoorbeeld StormEventsState heeft en PopulationDataStateNameheeft, geeft u de join als volgt op:

StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName  

$left is de tabel aan de linkerkant of buitenste kant van de joinoperator, in dit geval StormEvents. $right is de tabel aan de rechter- of binnenkant van de joinoperator, in dit geval PopulationData.

Fooi

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

De opzoekoperator gebruiken

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

In het Help-cluster bevindt zich een andere database met de naam ContosoSales die verkoopgegevens bevat. In de volgende query wordt lookup gebruikt om de tabellen SalesFact 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

ProductCategorienaam TotaleVerkoop
Games en speelgoed 966782
TV en Video 715024
Camera's en webcams 323003
Computers 313487
Huisapparaten 237508
Audio 192671
Mobiele telefoons 50342
Muziek, films en audioboeken 33376

Notitie

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

Door query gegenereerde tabellen samenvoegen

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

Stel dat u een lijst wilt maken van staten waarin zowel bliksem- als lawinegebeurtenissen zijn voorgekomen. Gebruik de join-operator om de rijen van twee tabellen samen te voegen, één met gegevens over bliksemevenementen en de andere met gegevens over lawine-gebeurtenissen, op basis van de kolom State.

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