Sdílet prostřednictvím


Kurz: Spojení dat z více tabulek

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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

V tomto kurzu se naučíte:

Příklady v tomto kurzu používají StormEvents tabulku, která je veřejně dostupná v clusteru nápovědy. Pokud chcete prozkoumat vlastní data, vytvořte si vlastní bezplatný cluster.

Příklady v tomto kurzu používají StormEvents tabulku, která je veřejně dostupná v ukázkových datech analýzy počasí.

Požadavky

Pokud chcete spustit následující dotazy, potřebujete prostředí dotazu s přístupem k ukázkovým datům. Můžete použít jednu z těchto možností:

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

Použití operátoru join

V databázi ukázek jsou dvě tabulky související s událostmi stormu. Jeden je volána StormEvents a druhý je volána 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 každá tabulka obsahuje.

StormEvents 
| take 5

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

Počáteční čas EndTime EpisodeId EventId State 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 Větrná bouře ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Větrná bouře ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTICKÝ JIH Okapová trouba ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Těžký déšť ...
PopulationData 
| take 5

Výstup

State Počet obyvatel
ALABAMA 4918690
ALJAŠKA 727951
ARIZONA 7399410
ARKANSAS 3025880
KALIFORNIE 39562900

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

Spojení tabulek

PopulationData Spojte tabulku se StormEvents společným State sloupcem a najděte celkové škody v 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 sloupcového grafu zobrazující poškození majetku na obyvatele podle státu

Tip

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

Použití vyhledávacího operátoru

Operátor vyhledávání optimalizuje výkon dotazů, ve kterých je tabulka faktů obohacena 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ý operátor používá join .

V clusteru nápovědy existuje jiná databáze ContosoSales , která obsahuje prodejní data. Následující dotaz používá lookup ke sloučení SalesFact tabulek a Products tabulek z této databáze k získání celkového prodeje podle kategorie produktů.

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

Výstup

ProductCategoryName TotalSales
Hry a hračky 966782
TV a video 715024
Kamery a videokamery 323003
Počítače 313487
Domácí spotřebiče 237508
Zvuk 192671
Mobilní telefony 50342
Hudba, filmy a zvukové knihy 33376

Poznámka:

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

Spojení tabulek generovaných dotazem

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

Řekněme, že chcete vytvořit seznam stavů, ve kterých došlo k blesku i lavinovým událostem. Pomocí operátoru spojení sloučíte řádky dvou tabulek – jeden obsahující data o událostech blesku a druhý 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

State
OREGON
UTAH
WYOMING
WASHINGTONSKÝ
KOLORADO
IDAHO
NEVADA