Compartir a través de


Combinación entre clústeres

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

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 a lo largo de este documento:

  • Clúster local: el 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 unió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.

Sintaxis

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

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

Parámetros

Nombre Type Obligatorio Descripción
LeftTable string ✔️ La 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, consulte 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 base de datos local, use la función database() para especificar la base de datos.
RightTable string ✔️ La 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 que coincidan tengan el mismo nombre en ambas tablas, use la sintaxis ON ColumnName. 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 unió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 unió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 , se ejecutaría "Ejemplo 1" 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ía en el clúster derecho.

Consideraciones sobre el rendimiento

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

Veamos los ejemplos siguientes de nuevo:

// 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 del clúster local.

La consulta siguiente lo hace mediante la right estrategia . Con la right estrategia, la operación de unió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.