Compartir a través de


Combinación entre clústeres

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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|
| join [ hint.remote=Estrategia ](
  [ cluster(ClusterName|
) 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 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 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 estrategia de auto determina dónde se ejecuta 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. Por ejemplo, con la estrategia automática, esta consulta se ejecuta en el clúster local:

    T | ... | join (cluster("B").database("DB").T2 | ...) on Col1
    
  • Si ambas tablas se hospedan fuera del clúster local, la combinación se realiza en el clúster derecho. Por ejemplo, suponiendo que ninguno de los clústeres sea el clúster local, la combinación se ejecutaría en el clúster derecho:

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

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.

En el ejemplo siguiente, 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.

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

Puede volver a escribir la consulta para usar hint.remote=right para optimizar el rendimiento. De este modo, 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