Operátor join

Sloučením řádků dvou tabulek vytvoříte novou tabulku tak, že z každé tabulky shodíte hodnoty zadaných sloupců.

dotazovací jazyk Kusto (KQL) nabízí mnoho druhů spojení, z nichž každé ovlivňuje schéma a řádky ve výsledné tabulce různými způsoby. Pokud například použijete inner spojení, tabulka má stejné sloupce jako levá tabulka a sloupce z pravé tabulky. Pokud je jedna tabulka vždy menší než druhá, pro zajištění nejlepšího výkonu ji použijte jako levou stranu operátoru join .

Následující obrázek poskytuje vizuální znázornění operace prováděné jednotlivými spojeními.

Diagram znázorňující typy spojení dotazů

Syntax

Levá tabulka|join [ kind=JoinFlavor ] [ Hints ] (RightTable)onConditions

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Levá tabulka string ✔️ Levá tabulka nebo tabulkový výraz, někdy označovaný jako vnější tabulka, jejíž řádky se mají sloučit. Označuje se jako $left.
JoinFlavor string Typ spojení, který se má provést: innerunique, inner, leftouter, fullouterrightouter, leftanti, rightanti, , leftsemi. rightsemi Výchozí formát je innerunique. Další informace o příchutích spojení najdete v tématu Vrácení.
Tipy string Žádné nebo více mezerami oddělených tipů spojení ve formě hodnoty názvu=, které řídí chování operace shody řádků a plánu provádění. Další informace najdete v tématu Tipy.
RightTable string ✔️ Pravá tabulka nebo tabulkový výraz, někdy označovaný jako vnitřní tabulka, jejíž řádky se mají sloučit. Označuje se jako $right.
Podmínky string ✔️ Určuje, jak jsou řádky z tabulky LeftTable spárovány s řádky z tabulky RightTable. Pokud mají sloupce, které chcete shodovat, stejný název v obou tabulkách, použijte syntaxi ONColumnName. Jinak použijte syntaxi ON $left.LeftColumn==$right.RightColumn. Pokud chcete zadat více podmínek, můžete buď použít klíčové slovo "a", nebo je oddělit čárkami. Pokud použijete čárky, vyhodnocují se podmínky pomocí logického operátoru "a".

Tip

Pokud je jedna tabulka vždy menší než druhá, pro zajištění nejlepšího výkonu ji použijte jako levou stranu spojení.

Tipy

Klávesa s nápovědou Hodnoty Popis
hint.remote auto, left, local, right Viz Připojení mezi clustery
hint.strategy=broadcast Určuje způsob sdílení zatížení dotazů na uzlech clusteru. Viz připojení k vysílání
hint.shufflekey=<key> Dotaz shufflekey sdílí zatížení dotazu na uzlech clusteru pomocí klíče k dělení dat. Zobrazit dotaz náhodného shuffle
hint.strategy=shuffle Dotaz shuffle strategie sdílí zatížení dotazů na uzlech clusteru, kde každý uzel zpracovává jeden oddíl dat. Zobrazit dotaz náhodného shuffle
Název Hodnoty Popis
hint.remote auto, left, local, right
hint.strategy=broadcast Určuje způsob sdílení zatížení dotazů na uzlech clusteru. Viz připojení k vysílání
hint.shufflekey=<key> Dotaz shufflekey sdílí zatížení dotazu na uzlech clusteru pomocí klíče k dělení dat. Zobrazit dotaz náhodného shuffle
hint.strategy=shuffle Dotaz shuffle strategie sdílí zatížení dotazů na uzlech clusteru, kde každý uzel zpracovává jeden oddíl dat. Zobrazit dotaz náhodného shuffle

Poznámka

Nápovědy ke spojení nemění sémantickou funkci, join ale můžou mít vliv na výkon.

Návraty

Návratové schéma a řádky závisí na příchuti spojení. Příchuť spojení je určena pomocí klíčového slova kind . Následující tabulka ukazuje podporované příchutě spojení. Pokud chcete zobrazit příklady pro konkrétní příchuť spojení, vyberte odkaz ve sloupci Spojit příchuť .

Spojit příchuť Návraty Obrázek
innerunique (výchozí) Vnitřní spojení s odstraněním duplicitních dat na levé straně
Schéma: Všechny sloupce z obou tabulek, včetně odpovídajících klíčů
Řádky: Všechny řádky odstraněné z levé tabulky, které odpovídají řádkům z pravé tabulky
Vnitřní Standardní vnitřní spojení
Schéma: Všechny sloupce z obou tabulek, včetně odpovídajících klíčů
Řádky: Pouze odpovídající řádky z obou tabulek
levý zleva Levé vnější spojení
Schéma: Všechny sloupce z obou tabulek, včetně odpovídajících klíčů
Řádky: Všechny záznamy z levé tabulky a pouze odpovídající řádky z pravé tabulky
rightouter Pravé vnější spojení
Schéma: Všechny sloupce z obou tabulek, včetně odpovídajících klíčů
Řádky: Všechny záznamy z pravé tabulky a pouze odpovídající řádky z levé tabulky
fullouter Úplné vnější spojení
Schéma: Všechny sloupce z obou tabulek, včetně odpovídajících klíčů
Řádky: Všechny záznamy z obou tabulek s chybějícími buňkami vyplněnými hodnotou null
leftsemi Levé poloviční spojení
Schéma: Všechny sloupce z levé tabulky
Řádky: Všechny záznamy z levé tabulky, které odpovídají záznamům z pravé tabulky
leftanti, anti, leftantisemi Levá anti-spojení a polo varianta
Schéma: Všechny sloupce z levé tabulky
Řádky: Všechny záznamy z levé tabulky, které neodpovídají záznamům z pravé tabulky
rightsemi Pravé poloviční spojení
Schéma: Všechny sloupce z pravé tabulky
Řádky: Všechny záznamy z pravé tabulky, které odpovídají záznamům z levé tabulky.
rightanti, rightantisemi Pravá anti join a polo varianta
Schéma: Všechny sloupce z pravé tabulky
Řádky: Všechny záznamy z pravé tabulky, které neodpovídají záznamům z levé tabulky.

Křížové spojení

KQL neposkytuje variantu křížového spojení. Efekt křížového spojení ale můžete dosáhnout použitím zástupného klíče.

V následujícím příkladu se do obou tabulek přidá zástupný klíč a pak se použije pro operaci vnitřního spojení, čímž se v podstatě dosáhne chování podobného křížovému spojení:

X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder