Kurz: Spojení dat z více tabulek

Spojení dat z více tabulek umožňuje komplexnější analýzu díky kombinování informací z různých zdrojů a vytváření nových relací mezi datovými body. V dotazovací jazyk Kusto (KQL) se ke kombinování dat mezi tabulkami používají operátory spojení a vyhledávání.

V tomto kurzu se naučíte:

Příklady v tomto kurzu používají veřejně dostupný cluster nápovědy. Pokud chcete zkoumat s vlastními daty, vytvořte si vlastní bezplatný cluster.

Požadavky

  • Účet Microsoft nebo Microsoft Entra identitu uživatele pro přihlášení ke clusteru nápovědy

Použití operátoru join

V databázi Samples jsou dvě tabulky související s událostmi storm. Jeden se nazývá StormEvents a druhý se nazývá PopulationData. V této části spojíte tabulky a provedete analýzu dat, která by nebyla možná jenom s jednou tabulkou.

Vysvětlení dat

Pomocí operátoru take můžete zjistit, jaká data jednotlivé tabulky obsahují.

StormEvents 
| take 5

Následující tabulka ukazuje pouze 6 z 22 vrácených sloupců.

StartTime EndTime Id epizody EventId Stav Typ události ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornádo ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Bouřkový vítr ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GRUZIE Bouřkový vítr ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTICKÝ JIH Kapka vody ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Silný déšť ...
PopulationData 
| take 5

Výstup

Stav Populace
ALABAMA 4918690
ALJAŠKA 727951
ARIZONA 7399410
ARKANSAS 3025880
KALIFORNIE 39562900

Obě tabulky obsahují State sloupec. Tabulka StormEvents obsahuje mnohem více sloupců a PopulationData má pouze jeden další sloupec, který obsahuje populaci daného státu.

Spojení tabulek

PopulationData Spojte tabulku s StormEvents ve sloupci Common State a zjistěte celkové škody na majetku způsobené bouřemi na obyvatele podle státu.

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

Přidáním | render columnchart do dotazu vizualizujete výsledek.

Snímek obrazovky se sloupcový graf zobrazující škody na majetku na obyvatele podle státu

Tip

Existuje mnoho typů spojení, která můžete provést pomocí operátoru join . Podívejte se na seznam příchutí spojení.

Použití operátoru vyhledávání

Operátor vyhledávání optimalizuje výkon dotazů, kdy je tabulka faktů rozšířená o data z tabulky dimenzí. Rozšiřuje tabulku faktů o hodnoty, které jsou vyhledány v tabulce dimenzí. Pro zajištění nejlepšího výkonu systém ve výchozím nastavení předpokládá, že levá tabulka je větší tabulka faktů a pravá tabulka je menší tabulka dimenzí. To je přesně opak předpokladu, který join operátor používá.

V clusteru nápovědy je další databáze s názvem ContosoSales , která obsahuje data o prodeji. Následující dotaz použije lookup ke sloučení SalesFact tabulek a Products z této databáze celkový prodej podle kategorie produktů.

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

Výstup

Productcategoryname TotalSales
Games and Toys 966782
TV and Video 715024
Cameras and camcorders 323003
Počítače 313487
Home Appliances 237508
Zvuk 192671
Cell phones 50342
Music, Movies and Audio Books 33376

Poznámka

Operátor lookup podporuje pouze dvě příchutě spojení: leftouter a inner.

Spojení tabulek vygenerovaných dotazem

Spojení je také možné provádět na základě výsledků dotazu ze stejné tabulky.

Řekněme, že chcete vytvořit seznam stavů, ve kterých došlo k bleskům i lavinovým událostem. Pomocí operátoru join můžete sloučit řádky dvou tabulek – jednu obsahující data o událostech blesku a druhou obsahující data o událostech laviny – na State základě sloupce.

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

Výstup

Stav
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA