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.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Aquí, el resultado es una tabla que extiende (FactTable
$left
) con datos de DimensionTable
(a los que hace $right
referencia ) realizando una búsqueda de cada par (CommonColumn
,Col
) de la tabla anterior con cada par (CommonColumn1
,Col2
) en la última tabla.
Para conocer las diferencias entre las tablas de hechos y dimensiones, consulte las tablas de hechos y dimensiones.
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
Condiciones de LeftTable [ =
kind
(|inner
leftouter
)] (
RightTable |
lookup
)
on
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, leftouter se usa , lo que significa que todas esas filas aparecerán en la salida con valores NULL usados para los valores que faltan de las columnas RightTable 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 cambiarán 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. - Los atributos (claves de búsqueda) solo aparecerán 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
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Bill", "Gates",
"2", "Bill", "Clinton",
"3", "Bill", "Clinton",
"4", "Steve", "Ballmer",
"5", "Tim", "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Bill", "Gates", "billg",
"Bill", "Clinton", "billc",
"Steve", "Ballmer", "steveb",
"Tim", "Cook", "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Row | Personal | Familia | Alias |
---|---|---|---|
1 | Bill | Puertas | billg |
2 | Bill | Clinton | billc |
3 | Bill | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Cocinar | timc |
Contenido relacionado
- Unión de difusión.