Operador join

Combina las filas de dos tablas para formar una nueva tabla haciendo coincidir los valores de las columnas especificadas de cada tabla.

Lenguaje de consulta Kusto (KQL) ofrece muchos tipos de combinaciones que afectan al esquema y a las filas de la tabla resultante de maneras diferentes. Por ejemplo, si utiliza una combinación inner, la tabla tendrá las mismas columnas que la tabla izquierda, más las columnas de la tabla derecha. Para obtener el mejor rendimiento, si una tabla siempre es menor que la otra, úsela como lado izquierdo del operador join.

La imagen siguiente proporciona una representación visual de la operación que realiza cada combinación.

Diagrama en el que se muestran los tipos de combinación de consultas.

Sintaxis

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

Más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
LeftTable string ✔️ La tabla izquierda o expresión tabular, a veces denominada tabla externa, cuyas filas se van a combinar. Se indica como $left.
JoinFlavor string El tipo de combinación que se debe realizar: innerunique, inner, leftouter, rightouter, fullouter, leftanti, rightanti, leftsemi, rightsemi. El valor predeterminado es innerunique. Para más información sobre los tipos de combinación, consulte Devoluciones.
Sugerencias string Cero o más sugerencias de combinación (separados por espacios) con el formato Name=Value, que controlan el comportamiento de la operación de coincidencia de filas y el plan de ejecución. Para más información, consulte Sugerencias.
RightTable string ✔️ La tabla derecha o expresión tabular, a veces denominada tabla interna, cuyas filas se van a combinar. Se indica como $right.
Condiciones string ✔️ Determina la correspondencia entre las filas de LeftTable y las de RightTable. Si las columnas que desea hacer coincidir tienen el mismo nombre en ambas tablas, utilice la sintaxis ONColumnName. De lo contrario, use la sintaxis ON $left.LeftColumn==$right.RightColumn. Para especificar varias condiciones, puede usar la palabra clave "and" o separarlas con comas. Si usa comas, las condiciones se evalúan mediante el operador lógico "and".

Sugerencia

Para obtener el mejor rendimiento, si una tabla siempre es menor que la otra, úsela como lado izquierdo de la combinación.

Sugerencias

Clave de sugerencia Valores Descripción
hint.remote auto, left, local, right Consulte Unión entre clústeres
hint.strategy=broadcast Especifica la manera de compartir la carga de consultas en los nodos del clúster. Ver combinación de difusión
hint.shufflekey=<key> La consulta shufflekey comparte la carga de consultas en los nodos del clúster mediante una clave para crear particiones de datos. Consulte la consulta aleatoria.
hint.strategy=shuffle La consulta de estrategia shuffle comparte la carga de consultas en los nodos del clúster, donde cada nodo procesa una partición de los datos. Consulte la consulta aleatoria.
Nombre Valores Descripción
hint.remote auto, left, local, right
hint.strategy=broadcast Especifica la manera de compartir la carga de consultas en los nodos del clúster. Ver combinación de difusión
hint.shufflekey=<key> La consulta shufflekey comparte la carga de consultas en los nodos del clúster mediante una clave para crear particiones de datos. Consulte la consulta aleatoria.
hint.strategy=shuffle La consulta de estrategia shuffle comparte la carga de consultas en los nodos del clúster, donde cada nodo procesa una partición de los datos. Consulte la consulta aleatoria.

Nota:

Las sugerencias de combinación no cambian la semántica de join, pero pueden afectar a su rendimiento.

Devoluciones

El esquema y las filas devueltos dependen del tipo de combinación. El tipo de combinación se especifica con la palabra clave kind. La siguiente tabla muestra los tipos combinación compatibles. Para ver ejemplos de un tipo de combinación específico, seleccione el vínculo de la columna Tipo de combinación.

Tipo de combinación Devoluciones Ilustración
innerunique (valor predeterminado) Combinación interna con desduplicación del lado izquierdo
Esquema: todas las columnas de ambas tablas, incluidas las claves coincidentes
Filas: todas las filas desduplicadas de la tabla izquierda que coinciden con las filas de la tabla derecha
inner Combinación interna estándar
Esquema: todas las columnas de ambas tablas, incluidas las claves coincidentes
Filas: solo las filas coincidentes de ambas tablas
leftouter Combinación externa izquierda
Esquema: todas las columnas de ambas tablas, incluidas las claves coincidentes
Filas: todos los registros de la tabla izquierda y solo las filas coincidentes de la tabla derecha
rightouter Combinación externa derecha
Esquema: todas las columnas de ambas tablas, incluidas las claves coincidentes
Filas: todos los registros de la tabla derecha y solo las filas coincidentes de la tabla izquierda
fullouter Combinación externa completa
Esquema: todas las columnas de ambas tablas, incluidas las claves coincidentes
Filas: todos los registros de ambas tablas con celdas no coincidentes rellenadas con null
leftsemi Semicombinación izquierda
Esquema: todas las columnas de la tabla izquierda
Filas: todos los registros de la tabla izquierda que coinciden con los registros de la tabla derecha
leftanti, anti, leftantisemi Left-Anti Join y variante Semi
Esquema: todas las columnas de la tabla izquierda
Filas: todos los registros de la tabla izquierda que no coinciden con los registros de la tabla derecha
rightsemi Semicombinación derecha
Esquema: todas las columnas de la tabla derecha
Filas: todos los registros de la tabla derecha que coinciden con los registros de la tabla izquierda
rightanti, rightantisemi Right-Anti Join y variante Semi
Esquema: todas las columnas de la tabla derecha
Filas: todos los registros de la tabla derecha que no coinciden con los registros de la tabla izquierda

Combinación cruzada

KQL no proporciona un tipo de combinación cruzada. Sin embargo, puede lograr un efecto de combinación cruzada mediante un enfoque de clave de marcador de posición.

En el ejemplo siguiente, se agrega una clave de marcador de posición a ambas tablas y, a continuación, se usa para la operación de combinación interna, logrando eficazmente un comportamiento similar al de la combinación cruzada:

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