Självstudie: Koppla data från flera tabeller
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
- Ett Microsoft-konto eller Entra-användaridentitet
- En Fabric-arbetsyta med en Microsoft Fabric-aktiverad kapacitet
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.
Om kolumnerna har olika namn, till exempel StormEvents
har State
och PopulationData
har StateName
anger 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 |
Relaterat innehåll
- Lär dig mer om olika typer av join-operatör
- Lär dig hur du utför frågor mellan databaser och mellan kluster
- Följ självstudiekursen skapa geospatiala visualiseringar