Operador lookup
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Extiende las columnas de una tabla de hechos con valores buscados en una tabla de dimensiones.
Por ejemplo, la consulta siguiente da como resultado una tabla que extiende el FactTable
($left
) con datos de la DimensionTable
($right
) realizando una búsqueda. La búsqueda coincide con cada par (CommonColumn
, Col1
) de FactTable
con cada par (CommonColumn
, Col2
) en el DimensionTable
. Para conocer las diferencias entre las tablas de hechos y dimensiones, consulte las tablas de hechos y dimensiones.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
El lookup
operador realiza una operación similar al operador join con las siguientes diferencias:
- El resultado no repite columnas de la
$right
tabla que son la base de la operación de combinación. - Solo se admiten dos tipos de búsqueda y
leftouter
inner
, conleftouter
el valor predeterminado. - En términos de rendimiento, el sistema supone de forma predeterminada que la
$left
tabla es la tabla más grande (hechos) y la$right
tabla es la tabla más pequeña (dimensiones). Esto es completamente opuesto a la suposición que usa el operadorjoin
. - El
lookup
operador difunde automáticamente la$right
tabla a la$left
tabla (básicamente, se comporta como sihint.broadcast
se hubiera especificado). Esto limita el tamaño de la$right
tabla.
Nota:
Si el lado derecho de la búsqueda es mayor que varias decenas de MB, se producirá un error en la consulta.
Puede ejecutar la consulta siguiente para calcular el tamaño del lado derecho en bytes:
rightSide
| summarize sum(estimate_data_size(*))
Sintaxis
|
lookup
LeftTable [kind
=
(leftouter
|inner
)] (
RightTable)
on
Attributes
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
LeftTable | string |
✔️ | La tabla o expresión tabular que es la base de la búsqueda. Se indica como $left . |
RightTable | string |
✔️ | La tabla o expresión tabular que se usa para "rellenar" nuevas columnas en la tabla de hechos. Se indica como $right . |
Atributos | string |
✔️ | Lista delimitada por comas de una o varias reglas que describen cómo se coinciden las filas de LeftTable con las filas de RightTable. Se evalúan varias reglas mediante el operador lógico and . Consulte Reglas. |
kind |
string |
Determina cómo tratar las filas de LeftTable que no tienen ninguna coincidencia en RightTable. De forma predeterminada, se usa leftouter , lo que significa que todas esas filas aparecen en la salida con valores NULL usados para los valores que faltan de RightTable columnas agregadas por el operador. Si inner se usa, estas filas se omiten de la salida. El operador no admite lookup otros tipos de combinación. |
Reglas
Tipo de regla | Sintaxis | Predicate |
---|---|---|
Igualdad por nombre | ColumnName |
where
LeftTable.ColumnName== RightTable.ColumnName |
Igualdad por valor |
$left.
LeftColumn== $right. RightColumn |
where
$left.
LeftColumn== $right. *RightColumn |
Nota:
En el caso de "igualdad por valor", los nombres de columna deben calificarse con la tabla de propietario aplicable indicada por $left
las notaciones y $right
.
Devoluciones
Una tabla con:
- Una columna por cada columna en cada una de las dos tablas, incluidas las claves coincidentes. Las columnas del lado derecho se cambian automáticamente de nombre si hay conflictos de nombres.
- Una fila por cada correspondencia entre las tablas de entrada. Una coincidencia es una fila seleccionada de una tabla que tiene el mismo valor para todos los campos
on
que una fila en la otra tabla. - El Atributos (claves de búsqueda) solo aparece una vez en la tabla de salida.
- Si
kind
no se especifica okind=leftouter
, además de las coincidencias internas, hay una fila para cada fila de la izquierda (o derecha), incluso si no tiene ninguna coincidencia. En este caso, las celdas de salida sin coincidencias contienen valores NULL. - Si
kind=inner
es , hay una fila en la salida para cada combinación de filas coincidentes de izquierda y derecha.
Ejemplos
En el ejemplo siguiente se muestra cómo realizar una combinación externa izquierda entre el FactTable
y DimTable
, en función de los valores coincidentes de las columnas Personal
y Family
.
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Rowan", "Murphy",
"2", "Ellis", "Turner",
"3", "Ellis", "Turner",
"4", "Maya", "Robinson",
"5", "Quinn", "Campbell"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Rowan", "Murphy", "rowanm",
"Ellis", "Turner", "ellist",
"Maya", "Robinson", "mayar",
"Quinn", "Campbell", "quinnc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
de salida
Row | Personal | Familia | Alias |
---|---|---|---|
1 | Serbal | Murphy | rowanm |
2 | Ellis | Tornero | ellist |
3 | Ellis | Tornero | ellist |
4 | Maya | Robinson | mayar |
5 | Quinn | Campbell | quinnc |
Contenido relacionado
- de difusión
- de combinación de leftouter
- de combinación interna
- operador join