Operador union
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Toma dos o más tablas y devuelve las filas de todas ellas.
Sintaxis
[ T |
] union
[ UnionParameters ] [ ] [withsource=
inner
|outer
kind=
ColumnName] [isfuzzy=
|true
false
] Tables
[ T |
] union
[kind=
outer
|inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
Obtenga más información sobre las convenciones de sintaxis.
Nota:
La operación del union
operador se puede modificar estableciendo la best_effort
propiedad true
request en , mediante una instrucción set o mediante propiedades de solicitud de cliente. Cuando esta propiedad se establece true
en , el union
operador omitirá la resolución aproximada y los errores de conectividad para ejecutar cualquiera de las subexpresiones que se están "unionando" y producirá una advertencia en los resultados del estado de la consulta.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
T | string |
Expresión tabular de entrada. | |
UnionParameters | string |
Cero o más parámetros separados por espacios en forma de nombre = valor, que controlan el comportamiento de la operación de coincidencia de filas y el plan de ejecución. Consulte parámetros de unión admitidos. |
|
kind |
string |
inner o outer . inner hace que el resultado tenga el subconjunto de columnas que son comunes a todas las tablas de entrada. outer hace que el resultado tenga todas las columnas que se producen en cualquiera de las entradas. Las celdas que no están definidas por una fila de entrada se establecen null en . El valor predeterminado es outer .Con outer , el resultado tiene todas las columnas que se producen en cualquiera de las entradas, una columna para cada nombre y repeticiones de tipo. Esto significa que si una columna aparece en varias tablas y tiene varios tipos, tiene una columna correspondiente para cada tipo en el resultado de la unión. Este nombre de columna tiene el sufijo "_" seguido del tipo de columna de origen. |
|
withsource= ColumnName |
string |
Si se especifica, la salida incluye una columna denominada ColumnName cuyo valor indica qué tabla de origen ha contribuido cada fila. Si la consulta hace referencia eficazmente a tablas de más de una base de datos, incluida la base de datos predeterminada, el valor de esta columna tiene un nombre de tabla calificado con la base de datos. las calificaciones de clúster y base de datos están presentes en el valor si se hace referencia a más de un clúster. | |
isfuzzy |
bool |
Si se establece en true , permite la resolución aproximada de las piernas de unión. El conjunto de orígenes de unión se reduce al conjunto de referencias de tabla que existen y son accesibles en el momento en el que se analiza la consulta y se prepara para su ejecución. Si se encontró al menos una tabla de este tipo, cualquier error de resolución genera una advertencia en los resultados del estado de la consulta, pero no impedirá la ejecución de la consulta. Si no se han realizado correctamente las resoluciones, la consulta devuelve un error. El valor predeterminado es false .isfuzzy=true solo se aplica a la fase de resolución de orígenes de union . Una vez determinado el conjunto de tablas de origen, no se suprimirán posibles errores de consulta adicionales. |
|
Tablas | string |
Una o varias referencias de tabla separadas por comas, una expresión de consulta entre paréntesis o un conjunto de tablas especificadas con un carácter comodín. Por ejemplo, E* forma la unión de todas las tablas de la base de datos cuyos nombres comienzan con E . |
Parámetros de unión admitidos
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
hint.concurrency |
int |
sugiere al sistema el número de subconsultas simultáneas del operador union que se deben ejecutar en paralelo. El valor predeterminado es el número de núcleos de CPU en el nodo único del clúster (de 2 a 16). |
|
hint.spread |
int |
sugiere al sistema el número de nodos que debe usar la ejecución simultánea de subconsultas union . El valor predeterminado es 1. |
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
T | string |
Expresión tabular de entrada. | |
kind |
string |
inner o outer . inner hace que el resultado tenga el subconjunto de columnas que son comunes a todas las tablas de entrada. outer hace que el resultado tenga todas las columnas que se producen en cualquiera de las entradas. Las celdas que no están definidas por una fila de entrada se establecen null en . El valor predeterminado es outer .Con outer , el resultado tiene todas las columnas que se producen en cualquiera de las entradas, una columna para cada nombre y repeticiones de tipo. Esto significa que si una columna aparece en varias tablas y tiene varios tipos, tiene una columna correspondiente para cada tipo en el resultado de la unión. Este nombre de columna tiene el sufijo "_" seguido del tipo de columna de origen. |
|
withsource= ColumnName |
string |
Si se especifica, la salida incluye una columna denominada ColumnName cuyo valor indica qué tabla de origen ha contribuido cada fila. Si la consulta hace referencia eficazmente a tablas de más de una base de datos, incluida la base de datos predeterminada, el valor de esta columna tiene un nombre de tabla calificado con la base de datos. las calificaciones de clúster y base de datos están presentes en el valor si se hace referencia a más de un clúster. | |
isfuzzy |
bool |
Si se establece en true , permite la resolución aproximada de las piernas de unión. El conjunto de orígenes de unión se reduce al conjunto de referencias de tabla que existen y son accesibles en el momento en el que se analiza la consulta y se prepara para su ejecución. Si se encontró al menos una tabla de este tipo, cualquier error de resolución genera una advertencia en los resultados del estado de la consulta, pero no impedirá la ejecución de la consulta. Si no se han realizado correctamente las resoluciones, la consulta devuelve un error. Sin embargo, en las consultas entre áreas de trabajo y entre aplicaciones, si no se encuentra alguna de las áreas de trabajo o aplicaciones, se producirá un error en la consulta. El valor predeterminado es false .isfuzzy=true solo se aplica a la fase de resolución de orígenes de union . Una vez determinado el conjunto de tablas de origen, no se suprimirán posibles errores de consulta adicionales. |
|
Tablas | string |
Una o varias referencias de tabla separadas por comas, una expresión de consulta entre paréntesis o un conjunto de tablas especificadas con un carácter comodín. Por ejemplo, E* forma la unión de todas las tablas de la base de datos cuyos nombres comienzan con E .Siempre que se conozca la lista de tablas, evite usar caracteres comodín. Algunos espacios de trabajo contienen un número muy grande de tablas, lo que provocaría una ejecución ineficiente. También se pueden agregar tablas con el tiempo, lo que provoca resultados imprevisibles. |
Nota:
- El
union
ámbito puede incluir instrucciones let si se atribuyen a laview
palabra clave . - El
union
ámbito no incluirá funciones. Para incluir una función, defina una instrucción let con laview
palabra clave . - No hay ninguna garantía del orden en que aparecerán las piernas de unión, pero si cada pierna tiene un
order by
operador, se ordenará cada pierna.
Devoluciones
Una tabla con todas las filas que hay en las tablas de entrada.
Ejemplos
Tablas con una cadena en el nombre o columna
union K* | where * has "Kusto"
Filas de todas las tablas de la base de datos cuyo nombre comience por K
y en las que alguna columna incluya la palabra Kusto
.
Recuento de valores únicos
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
El número de usuarios distintivos que han creado un evento Query
o un evento Command
a lo largo del día anterior. En el resultado, la columna "SourceTable" indicará "Query" o "Command".
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Esta versión más eficaz, produce el mismo resultado. Filtra cada tabla antes de crear la unión.
Usar isfuzzy=true
// Using union isfuzzy=true to access non-existing view:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true
(View_1 | where x > 0),
(View_2 | where x > 0),
(View_3 | where x > 0)
| count
Salida
Count |
---|
2 |
Al observar el estado de la consulta: se devolvió la siguiente advertencia: Failed to resolve entity 'View_3'
.
// Using union isfuzzy=true and wildcard access:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true View*, SomeView*, OtherView*
| count
Salida
Count |
---|
3 |
Al observar el estado de la consulta: se devolvió la siguiente advertencia: Failed to resolve entity 'SomeView*'
.
Error de coincidencia de tipos de columnas de origen
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Salida
TableName | x_long | x_int |
---|---|---|
View_1 | 1 | |
View_2 | 2 |
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
let View_3 = view () { print x_long=3 };
union withsource=TableName View_1, View_2, View_3
Salida
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
La columna x
de View_1
recibió el sufijo _long
y, como ya existe una columna denominada x_long
en el esquema de resultados, los nombres de columna se desduplicaron, lo que produjo una nueva columna: x_long1
.