Udostępnij za pośrednictwem


Samouczek: dołączanie danych z wielu tabel

Dotyczy: ✅Microsoft Fabric

Łączenie danych z wielu tabel umożliwia bardziej kompleksową analizę dzięki połączeniu informacji z różnych źródeł i utworzeniu nowych relacji między punktami danych. W język zapytań Kusto (KQL) operatory sprzężenia i wyszukiwania są używane do łączenia danych między tabelami.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

W przykładach w tym samouczku StormEvents użyto tabeli, która jest publicznie dostępna w klastrze pomocy. Aby eksplorować własne dane, utwórz własny bezpłatny klaster.

W przykładach w tym samouczku użyto StormEvents tabeli, która jest publicznie dostępna w przykładowych danych analizypogody.

Wymagania wstępne

Aby uruchomić następujące zapytania, potrzebujesz środowiska zapytań z dostępem do przykładowych danych. Możesz użyć jednej z następujących opcji:

  • Konto Microsoft lub tożsamość użytkownika Microsoft Entra w celu zalogowania się do klastra pomocy

Korzystanie z operatora sprzężenia

W bazie danych Samples znajdują się dwie tabele związane ze zdarzeniami storm. Jedna jest wywoływanaStormEvents, a druga jest nazywana .PopulationData W tej sekcji połączysz tabele w celu przeprowadzenia analizy danych, która nie byłaby możliwa tylko z jedną tabelą.

Omówienie danych

Użyj operatora take, aby zobaczyć, jakie dane zawiera każda tabela.

StormEvents 
| take 5

W poniższej tabeli przedstawiono tylko 6 z 22 zwracanych kolumn.

StartTime EndTime EpisodeId EventId Stan 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 Wiatr i burza ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Wiatr i burza ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 POŁUDNIE ATLANTYCKIE Wodopoje ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Ulewny deszcz ...
PopulationData 
| take 5

Wyjście

Stan Populacja
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
KALIFORNIA 39562900

Obie tabele zawierają kolumnę State . Tabela StormEvents zawiera o wiele więcej kolumn i PopulationData zawiera tylko jedną inną kolumnę zawierającą populację danego stanu.

Łączenie tabel

Dołącz tabelę PopulationData z StormEvents kolumną wspólną State , aby znaleźć łączne szkody w nieruchomości spowodowane przez burze na mieszkańca według stanu.

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

Dodaj | render columnchart do zapytania, aby zwizualizować wynik.

Zrzut ekranu przedstawiający wykres kolumnowy przedstawiający uszkodzenia nieruchomości na mieszkańca według stanu.

Jeśli kolumny mają różne nazwy, na przykład StormEvents ma State, a PopulationData ma StateName, określ sprzężenia w następujący sposób:

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

$left to tabela po lewej lub zewnętrznej stronie operatora łączenia, w tym przypadku StormEvents. $right to tabela po prawej lub wewnętrznej stronie operatora sprzężenia, w tym przypadku PopulationData.

Napiwek

Istnieje wiele typów sprzężeń, które można wykonać za pomocą join operatora . Zobacz listę smaków sprzężenia.

Korzystanie z operatora odnośnika

Operator wyszukiwania optymalizuje wydajność zapytań, w których tabela faktów jest wzbogacona o dane z tabeli wymiarów. Rozszerza tabelę faktów o wartości, które są wyszukane w tabeli wymiarów. Aby uzyskać najlepszą wydajność, system domyślnie zakłada, że lewa tabela jest większą tabelą faktów, a prawa tabela jest mniejszą tabelą wymiarów. Jest to dokładnie przeciwieństwo założenia, które jest używane przez join operatora.

W klastrze pomocy istnieje inna baza danych o nazwie ContosoSales , która zawiera dane sprzedaży. Poniższe zapytanie używa lookup metody , aby scalić SalesFact tabele i Products z tej bazy danych, aby uzyskać łączną sprzedaż według kategorii produktów.

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

Wyjście

ProductCategoryName TotalSales
Gry i zabawki 966782
Tv i wideo 715024
Kamery i kamery 323003
Komputery 313487
Gospodarstwa domowego 237508
Audio 192671
Telefony komórkowe 50342
Muzyka, filmy i książki audio 33376

Uwaga

Operator lookup obsługuje tylko dwa sprzężenia: leftouter i inner.

Łączenie tabel generowanych przez zapytania

Sprzężenia można również wykonywać na podstawie wyników zapytania z tej samej tabeli.

Załóżmy, że chcesz utworzyć listę stanów, w których wystąpiły zdarzenia pioruna i lawiny. Użyj operatora sprzężenia, aby scalić wiersze dwóch tabel — jedną zawierającą dane dotyczące zdarzeń błyskawic i drugą zawierającą dane na zdarzeniach lawinowych — na State podstawie kolumny.

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

Wyjście

Stan
OREGON
UTAH
WYOMING
WASZYNGTON
KOLORADO
IDAHO
NEVADA