Unión entre clústeres

Una combinación entre clústeres implica unir datos de conjuntos de datos que residen en distintos clústeres.

En una combinación entre clústeres, la consulta se puede ejecutar en tres ubicaciones posibles, cada una con una designación específica para referencia en este documento:

  • Clúster local: clúster al que se envía la solicitud, que también se conoce como el clúster que hospeda la base de datos en contexto.
  • Clúster izquierdo: el clúster que hospeda los datos en el lado izquierdo de la operación de combinación.
  • Clúster derecho: el clúster que hospeda los datos en el lado derecho de la operación de combinación.

El clúster que ejecuta la consulta captura los datos del otro clúster.

Nota

Si los datos de los lados izquierdo y derecho de una operación de combinación se hospedan en el mismo clúster, no se considera una combinación entre clústeres, incluso si los datos se hospedan fuera del clúster local.

Syntax

[ cluster(ClusterName).database(DatabaseName).]LeftTable| ...
|join [ hint.remote=Estrategia ] (
  [ cluster(ClusterName).database(DatabaseName).]RightTable| ...
) en condiciones

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
LeftTable string ✔️ Tabla izquierda o expresión tabular cuyas filas se van a combinar. Se indica como $left.
Estrategia string Determina el clúster en el que se va a ejecutar la combinación. Los valores admitidos son left, right, local y auto. Para obtener más información, vea Estrategias.
ClusterName string Si los datos de la combinación residen fuera del clúster local, use la función cluster() para especificar el clúster.
DatabaseName string Si los datos de la combinación residen fuera del contexto de la base de datos local, use la función database() para especificar la base de datos.
RightTable string ✔️ Tabla derecha o expresión tabular 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".

Estrategias

En la lista siguiente se explican los valores admitidos para el parámetro Strategy :

  • left: ejecute la combinación en el clúster de la tabla izquierda o en el clúster izquierdo.
  • right: ejecute la combinación en el clúster de la tabla derecha o en el clúster derecho.
  • local: ejecute la combinación en el clúster del clúster actual o en el clúster local.
  • auto: (Valor predeterminado) Kusto toma la decisión de comunicación remota.

Nota

La sugerencia de comunicación remota de combinación se omite si la estrategia sugerencia no es aplicable a la operación de combinación.

Funcionamiento de la estrategia automática

De forma predeterminada, la auto estrategia determina dónde se debe ejecutar la combinación entre clústeres en función de las reglas siguientes:

  • Si una de las tablas se hospeda en el clúster local, la combinación se realiza en el clúster local.
  • Si ambas tablas se hospedan fuera del clúster local, la combinación se realiza en el clúster derecho.

Considere los siguientes ejemplos:

// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1

Con la auto estrategia, "Ejemplo 1" se ejecutaría en el clúster local. En "Ejemplo 2", suponiendo que ninguno de los clústeres sea el clúster local, la combinación se ejecutará en el clúster derecho.

Consideraciones de rendimiento

Para obtener un rendimiento óptimo, se recomienda ejecutar la consulta en el clúster que contiene la tabla más grande.

Veamos de nuevo los ejemplos siguientes:

// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1

"Ejemplo 1" se establece para ejecutarse en el clúster local, pero si el conjunto de datos generado por T | ... es menor que uno generado por cluster("B").database("DB").T2 | ... , sería más eficaz ejecutar la operación de combinación en el clúster B, en este caso el clúster correcto, en lugar de en el clúster local.

La siguiente consulta lo hace mediante la right estrategia . Con la right estrategia, la operación de combinación se realiza en el clúster derecho, incluso si la tabla izquierda está en el clúster local.

T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1

Esta funcionalidad no se admite en Azure Monitor.