Dela via


Självstudie: Koppla data från flera tabeller

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Genom att koppla data från flera tabeller kan du få en mer omfattande analys genom att kombinera information från olika källor och skapa nya relationer mellan datapunkter. I Kusto Query Language (KQL)används operatorerna join och lookup för att kombinera data mellan tabeller.

I den här självstudien får du lära dig att:

Exemplen i den här handledningen använder tabellen StormEvents, som offentligt tillgänglig i hjälpklustret . Utforska med dina egna data genom att skapa ett eget kostnadsfritt kluster .

Exemplen i den här handledningen använder tabellen StormEvents, som är offentligt tillgänglig i exempeldata för väderanalys.

Förutsättningar

Om du vill köra följande frågor behöver du en frågemiljö med åtkomst till exempeldata. Du kan använda något av följande:

  • Ett Microsoft-konto eller en Microsoft Entra-användaridentitet för att logga in på hjälpkluster

Använd kopplingsoperatorn

Det finns två tabeller i databasen Samples relaterade till stormhändelser. Den ena heter StormEvents och den andra kallas PopulationData. I det här avsnittet ansluter du tabellerna för att utföra dataanalyser som inte skulle vara möjliga enbart med en tabell.

Förstå data

Använd operatorn ta för att se vilka data varje tabell innehåller.

StormEvents 
| take 5

I följande tabell visas endast 6 av de 22 returnerade kolumnerna.

Starttid Sluttid EpisodeId EventId Stat Händelsetyp ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tromb ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Åskvädersvind ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIEN Åskvindsstorm ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTEN, SÖDRA Vattenspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Kraftigt regn ...
PopulationData 
| take 5

utdata

Stat Befolkning
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
KALIFORNIEN 39562900

Båda tabellerna innehåller en State kolumn. Tabellen StormEvents innehåller många fler kolumner och PopulationData har bara en annan kolumn som innehåller populationen av det angivna tillståndet.

Sammanfoga tabellerna

Anslut tabellen PopulationData med StormEvents på den gemensamma kolumnen State för att hitta den totala egendomsskadan som orsakas av stormar per capita per delstat.

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

Lägg till | render columnchart i frågan för att visualisera resultatet.

Skärmbild av stapeldiagram som visar egendomsskador per capita och delstat.

Om kolumnerna har olika namn, till exempel StormEvents har State och PopulationData har StateNameanger du kopplingen enligt följande:

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

$left är tabellen till vänster eller på den yttre sidan av kopplingsoperatorn, i det här fallet StormEvents. $right är tabellen till höger, eller den inre delen av kopplingsoperatorn, i det här fallet PopulationData.

Tips

Det finns många typer av kopplingar som du kan utföra med operatorn join. Se en lista över anslutningsvarianter.

Använda uppslagsoperatorn

Operatorn för sökning optimerar prestandan hos frågor där en faktatabell berikas med data från en dimensionstabell. Den utökar faktatabellen med värden som letas upp i en dimensionstabell. För bästa prestanda förutsätter systemet som standard att den vänstra tabellen är den större faktatabellen och att den högra tabellen är den mindre dimensionstabellen. Detta är precis tvärtom till antagandet som används av join-operatorn.

I hjälpklustret finns det en annan databas som heter ContosoSales som innehåller försäljningsdata. Följande fråga använder lookup för att sammanfoga tabellerna SalesFact och Products från den här databasen för att få den totala försäljningen per produktkategori.

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

utdata

Produktkategorinamn TotalFörsäljning
Spel och leksaker 966782
TV och video 715024
Kameror och videokameror 323003
Datorer 313487
Hushållsapparater 237508
Ljud 192671
Mobiltelefoner 50342
Musik, filmer och ljudböcker 33376

Not

Operatorn lookup stöder endast två kopplingssmaker: leftouter och inner.

Ansluta till frågegenererade tabeller

Kopplingar kan också göras baserat på frågeresultat från samma tabell.

Anta att du vill skapa en lista över tillstånd där både blixtnedslag och lavinhändelser inträffade. Använd kopplingsoperatorn för att sammanfoga raderna i två tabeller – den ena innehåller data om blixthändelser och den andra innehåller data om lavinhändelser – baserat på kolumnen State.

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

utdata

Stat
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA