Compartir a través de


Operador lookup

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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 leftouterinner, con leftouter 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 operador join.
  • El lookup operador difunde automáticamente la $right tabla a la $left tabla (básicamente, se comporta como si hint.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)onAttributes

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 o kind=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=inneres , 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
  • de difusión
  • de combinación de leftouter
  • de combinación interna
  • operador join