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.
Syntax
Levá tabulka|
join
[ kind
=
JoinFlavor ] [ Hints ] (
RightTable)
on
Conditions
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
Levá tabulka | řetězec | ✓ | 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 | řetězec | Typ spojení, který se má provést: innerunique , inner , leftouter , fullouter rightouter , leftanti , rightanti , , leftsemi . rightsemi Výchozí formát je innerunique . Další informace o příchutích spojení najdete v tématu Vrácení. |
|
Tipy | řetězec | Žá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 | řetězec | ✓ | 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 | řetězec | ✓ | 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 ON ColumnName. 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-spojení 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í. Efektu křížového spojení ale můžete dosáhnout 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ého křížovému spojení:
X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder
Viz také
Váš názor
Odeslat a zobrazit názory pro