Operatore join
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Consente di unire le righe di due tabelle in modo da formare una nuova tabella, facendo corrispondere i valori delle colonne specificate da ogni tabella.
Linguaggio di query Kusto (KQL) offre molti tipi di join che influiscono su schema e righe nella tabella risultante in modi diversi. Ad esempio, se si usa un inner
join, la tabella ha le stesse colonne della tabella a sinistra, più le colonne della tabella a destra. Per assicurare prestazioni migliori, se una tabella è sempre più piccola dell'altra, usarla come lato sinistro dell'operatore join
.
L'immagine seguente fornisce una rappresentazione visiva dell'operazione eseguita da ogni join. Il colore dell'ombreggiatura rappresenta le colonne restituite e le aree ombreggiate rappresentano le righe restituite.
Sintassi
LeftTable join
|
[ kind
=
JoinFlavor ] [ Hints ] (
RightTable)
on
Conditions
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
LeftTable | string |
✔️ | Tabella sinistra o espressione tabulare, talvolta denominata tabella esterna, le cui righe devono essere unite. Indicata come $left . |
JoinFlavor | string |
Tipo di join da eseguire: innerunique , inner , leftouter , rightouter , fullouter , leftanti rightanti , leftsemi . rightsemi Il valore predefinito è innerunique . Per altre informazioni sui tipi di join, vedere Restituisce. |
|
Hint | string |
Zero o più hint join separati da spazi sotto forma di Valore nome = che controllano il comportamento dell'operazione di corrispondenza di riga e del piano di esecuzione. Per altre informazioni, vedere Hint. |
|
RightTable | string |
✔️ | Tabella destra o espressione tabulare, talvolta denominata tabella interna, le cui righe devono essere unite. Indicata come $right . |
Condizioni | string |
✔️ | Determina la corrispondenza delle righe di LeftTable con le righe di RightTable. Se le colonne che si desidera associare hanno lo stesso nome in entrambe le tabelle, usare la sintassi ON ColumnName. In caso contrario, usare la sintassi ON $left. LeftColumn $right. == RightColumn. Per specificare più condizioni, è possibile usare la parola chiave "and" o separarle con virgole. Se si usano virgole, le condizioni vengono valutate usando l'operatore logico "and". |
Suggerimento
Per ottenere prestazioni ottimali, se una tabella è sempre più piccola dell'altra, usarla come lato sinistro del join.
Hint
Tasto hint | Valori | Descrizione |
---|---|---|
hint.remote |
auto , left , local right |
Vedere Join tra cluster |
hint.strategy=broadcast |
Specifica il modo in cui condividere il carico di query sui nodi del cluster. | Vedere broadcast join |
hint.shufflekey=<key> |
La shufflekey query condivide il carico delle query sui nodi del cluster, usando una chiave per partizionare i dati. |
Vedere query shuffle |
hint.strategy=shuffle |
La shuffle query di strategia condivide il carico di query sui nodi del cluster, in cui ogni nodo elabora una partizione dei dati. |
Vedere query shuffle |
Nome | Valori | Descrizione |
---|---|---|
hint.remote |
auto , left , local right |
|
hint.strategy=broadcast |
Specifica il modo in cui condividere il carico di query sui nodi del cluster. | Vedere broadcast join |
hint.shufflekey=<key> |
La shufflekey query condivide il carico delle query sui nodi del cluster, usando una chiave per partizionare i dati. |
Vedere query shuffle |
hint.strategy=shuffle |
La shuffle query di strategia condivide il carico di query sui nodi del cluster, in cui ogni nodo elabora una partizione dei dati. |
Vedere query shuffle |
Nota
Gli hint di join non modificano la semantica di join
ma possono influire sulle prestazioni.
Valori restituiti
Lo schema restituito e le righe dipendono dal sapore di join. Il tipo di join viene specificato con la parola chiave kind . La tabella seguente illustra le versioni di join supportate. Per visualizzare esempi per un sapore di join specifico, selezionare il collegamento nella colonna Join flavor .To see examples for a specific join flavor column.
Tipo di join | Valori restituiti | Illustrazione |
---|---|---|
innerunique (impostazione predefinita) | Inner join con deduplicazione del lato sinistro Schema: tutte le colonne di entrambe le tabelle, incluse le chiavi corrispondenti Righe: tutte le righe deduplicate della tabella sinistra che corrispondono alle righe della tabella destra |
|
inner | Inner join standard Schema: tutte le colonne di entrambe le tabelle, incluse le chiavi corrispondenti Righe: solo le righe corrispondenti di entrambe le tabelle |
|
leftouter | Left outer join Schema: tutte le colonne di entrambe le tabelle, incluse le chiavi corrispondenti Righe: tutti i record della tabella sinistra e solo le righe corrispondenti della tabella destra |
|
rightouter | Right outer join Schema: tutte le colonne di entrambe le tabelle, incluse le chiavi corrispondenti Righe: tutti i record della tabella destra e solo le righe corrispondenti della tabella sinistra |
|
fullouter | Full outer join Schema: tutte le colonne di entrambe le tabelle, incluse le chiavi corrispondenti Righe: tutti i record di entrambe le tabelle con celle non corrispondenti popolate con valori Null |
|
leftsemi | Semi join di sinistra Schema: tutte le colonne della tabella sinistra Righe: tutti i record della tabella sinistra che corrispondono ai record della tabella destra |
|
leftanti , anti , leftantisemi |
Variante anti join e semi join di sinistra Schema: tutte le colonne della tabella sinistra Righe: tutti i record della tabella sinistra che non corrispondono ai record della tabella destra |
|
rightsemi | Semi join di destra Schema: tutte le colonne della tabella destra Righe: tutti i record della tabella destra che corrispondono ai record della tabella sinistra |
|
rightanti , rightantisemi |
Variante anti join e semi join di destra Schema: tutte le colonne della tabella destra Righe: tutti i record della tabella destra che non corrispondono ai record della tabella sinistra |
Cross join
KQL non fornisce un tipo di cross join. Tuttavia, è possibile ottenere un effetto cross join usando un approccio di chiave segnaposto.
Nell'esempio seguente viene aggiunta una chiave segnaposto a entrambe le tabelle e quindi usata per l'operazione di inner join, ottenendo in modo efficace un comportamento simile al cross join:
X | extend placeholder=1 | join kind=inner (Y | extend placeholder=1) on placeholder