Sdílet prostřednictvím


Operátor join

Sloučí řádky dvou tabulek a vytvoří novou tabulku podle odpovídajících hodnot zadaných sloupců z každé tabulky.

dotazovací jazyk Kusto (KQL) nabízí mnoho druhů spojení, které 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. Nejlepšího výkonu dosáhnete, pokud je jedna tabulka vždy menší než druhá, použijte ji 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. Barva stínování představuje vrácené sloupce a vrácené oblasti představují vrácené řádky.

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

Syntaxe

LeftTable join | [ kind = JoinFlavor ] [ Hints ] (RightTable) on Conditions

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

Parametry

Název Type Pož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čeno jako $left.
JoinFlavor string Typ spojení, který se má provést: innerunique, inner, rightouterleftouter, fullouter, leftanti, rightanti, , leftsemi, . rightsemi Výchozí hodnota je innerunique. Další informace o příchutí spojení naleznete v tématu Návraty.
Rady string Nápovědy k nulovému nebo více mezerami oddělenému spojení ve formě hodnoty názvu = , která řídí chování operace shody řádků a plánu provádění. Další informace naleznete v tématu Nápovědy.
RightTable string ✔️ Pravá tabulka nebo tabulkový výraz, někdy označovaný jako vnitřní tabulka, jejíž řádky se mají sloučit. Označeno jako $right.
Podmínky string ✔️ Určuje, jak se řádky z tabulky LeftTable shodují s řádky z tabulky RightTable. Pokud sloupce, které chcete shodovat, mají v obou tabulkách stejný název, použijte syntaxi ON ColumnName. Jinak použijte syntaxi ON $left.LeftColumn $right.==RightColumn RightColumn. Pokud chcete zadat více podmínek, můžete použít klíčové slovo "a" nebo je oddělit čárkami. Pokud použijete čárky, podmínky se vyhodnocují pomocí logického operátoru "a".

Tip

Nejlepšího výkonu dosáhnete, pokud je jedna tabulka vždy menší než druhá, použijte ji jako levou stranu spojení.

Tipy

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

Poznámka:

Rady spojení nemění sémantiku join , ale můžou ovlivnit výkon.

Návraty

Návratové schéma a řádky závisí na příchuti spojení. Příchuť spojení je určena klíčovým slovem typu . Následující tabulka uvádí podporované varianty spojení. Pokud chcete zobrazit příklady pro konkrétní příchuť spojení, vyberte odkaz ve sloupci Připojit příchuť .

Příchuť spojení Návraty Ilustrace
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é duplicitními daty 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
leftouter 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 naplněnými hodnotou null
leftsemi Levé střední 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, , antileftantisemi Levá anti join 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é střední 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 příchuť křížového spojení. Efekt křížového spojení ale můžete dosáhnout pomocí přístupu pomocí 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 vnitřní operaci spojení, čímž se efektivně dosáhne chování podobné křížovému spojení:

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