Samouczek: dołączanie danych z wielu tabel

Dołączanie danych z wielu tabel umożliwia bardziej kompleksową analizę dzięki połączeniu informacji z różnych źródeł i tworzeniu 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:

Przykłady w tym samouczku korzystają z publicznie dostępnego klastra pomocy. Aby eksplorować własne dane, utwórz własny bezpłatny klaster.

Wymagania wstępne

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

Korzystanie z operatora sprzężenia

Istnieją dwie tabele w bazie danych Samples powiązane ze zdarzeniami storm. Jeden jest wywoływany StormEvents , a drugi jest nazywany PopulationData. W tej sekcji dołączysz tabele do przeprowadzenia analizy danych, która nie byłaby możliwa tylko w jednej tabeli.

Informacje o 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 zwróconych kolumn.

StartTime EndTime Identyfikator odcinka EventId Stan Typ zdarzenia ...
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 Burza wiatru ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GRUZJA Burza wiatru ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 POŁUDNIE ATLANTYCKIE Waterspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Ulewny deszcz ...
PopulationData 
| take 5

Dane wyjściowe

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

Obie tabele zawierają kolumnę State . Tabela StormEvents zawiera wiele kolumn, a PopulationData kolumna zawiera tylko jedną inną kolumnę zawierającą populację danego stanu.

Dołączanie tabel

Dołącz tabelę z StormEvents kolumną wspólnąState, PopulationData aby znaleźć łączną szkodę nieruchomości spowodowaną 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.

Porada

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 odnośnika 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ą szukane w tabeli wymiarów. Aby uzyskać najlepszą wydajność, system domyślnie zakłada, że lewa tabela jest większą tabelą faktów, a właściwa 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 do scalania SalesFact tabel i Products z tej bazy danych w celu uzyskania łącznej sprzedaży według kategorii produktów.

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

Dane wyjściowe

Productcategoryname TotalSales
Gry i zabawki 966782
TV i wideo 715024
Aparaty i kamery 323003
Komputery 313487
Sprzęt AGD 237508
Dźwięk 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 lawin. Użyj operatora sprzężenia, aby scalić wiersze dwóch tabel — jedną zawierającą dane dotyczące zdarzeń błyskawic, a drugą zawierającą dane dotyczące zdarzeń lawinowych — na State podstawie kolumny.

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

Dane wyjściowe

Stan
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA