Operátor join
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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.
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 , rightouter leftouter , 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 , , local right |
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 , , local right |
|
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 , , anti leftantisemi |
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