Combinación entre clústeres
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 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 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