operador de pesquisa
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Estende as colunas de uma tabela de fatos com valores pesquisados em uma tabela de dimensão.
Por exemplo, a consulta a seguir resulta em uma tabela que estende o FactTable
($left
) com dados do DimensionTable
($right
) executando uma pesquisa. A pesquisa corresponde a cada par (CommonColumn
, Col1
) de FactTable
com cada par (CommonColumn
, Col2
) no DimensionTable
. Para saber as diferenças entre tabelas de fatos e dimensões, consulte tabelas de fatos e dimensões.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
O operador
- O resultado não repete colunas da tabela
$right
que são a base para a operação de junção. - Apenas dois tipos de pesquisa são suportados,
leftouter
einner
, comleftouter
sendo o padrão. - Em termos de desempenho, o sistema por padrão assume que a tabela
$left
é a tabela maior (fatos) e a tabela$right
é a tabela menor (dimensões). Isto é exatamente o oposto do pressuposto utilizado pelo operadorjoin
. - O operador
lookup
transmite automaticamente a tabela$right
para a tabela$left
(essencialmente, comporta-se como sehint.broadcast
tivesse sido especificado). Isso limita o tamanho da tabela$right
.
Observação
Se o lado direito da pesquisa for maior que várias dezenas de MBs, a consulta falhará.
Você pode executar a seguinte consulta para estimar o tamanho do lado direito em bytes:
rightSide
| summarize sum(estimate_data_size(*))
Sintaxe
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
RightTable)
on
Atributos
Saiba mais sobre convenções de sintaxe.
Parâmetros
Designação | Tipo | Necessário | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela ou expressão tabular que é a base para a pesquisa. Denotado como $left . |
RightTable | string |
✔️ | A tabela ou expressão tabular usada para "preencher" novas colunas na tabela de fatos. Denotado como $right . |
Atributos | string |
✔️ | Uma lista delimitada por vírgulas de uma ou mais regras que descrevem como as linhas de LeftTable são correspondidas às linhas de RightTable. Várias regras são avaliadas usando o operador lógico and . Consulte Regras. |
kind |
string |
Determina como tratar linhas em LeftTable que não têm correspondência em RightTable. Por padrão, leftouter é usado, o que significa que todas essas linhas aparecem na saída com valores nulos usados para os valores ausentes de RightTable colunas adicionadas pelo operador. Se inner for usado, essas linhas serão omitidas da saída. Outros tipos de associação não são suportados pelo operador lookup . |
Regras
Tipo de regra | Sintaxe | Predicado |
---|---|---|
Igualdade pelo nome | ColumnName |
where
LeftTable.ColumnName== RightTable. ColumnName |
Igualdade por valor |
$left.
LeftColumn== $right. RightColumn |
where
$left.
LeftColumn== $right. *RightColumn |
Observação
No caso de «igualdade por valor», os nomes das colunas devem ser qualificados com a tabela do proprietário aplicável indicada por notações $left
e $right
.
Devoluções
Uma tabela com:
- Uma coluna para cada coluna em cada uma das duas tabelas, incluindo as teclas correspondentes. As colunas do lado direito são automaticamente renomeadas se houver conflitos de nome.
- Uma linha para cada correspondência entre as tabelas de entrada. Uma correspondência é uma linha selecionada de uma tabela que tem o mesmo valor para todos os campos
on
que uma linha na outra tabela. - Os Atributos
(teclas de pesquisa) aparecem apenas uma vez na tabela de saída. - Se
kind
não estiver especificado oukind=leftouter
, então, além das correspondências internas, há uma linha para cada linha à esquerda (e/ou direita), mesmo que não tenha correspondência. Nesse caso, as células de saída incomparáveis contêm nulos. - Se
kind=inner
, então há uma linha na saída para cada combinação de linhas correspondentes da esquerda e da direita.
Exemplos
O exemplo a seguir mostra como executar uma junção externa esquerda entre o FactTable
e o DimTable
, com base em valores correspondentes nas colunas Personal
e 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
Output
Linha | Pessoal | Família | Alias |
---|---|---|---|
1 | Rowan | Murphy | Rowanm |
2 | Ellis | Espátula | Ellist |
3 | Ellis | Espátula | Ellist |
4 | Maia | Robinson | Mayar |
5 | Quinzinho | Campbell • | Quinnc |
Conteúdo relacionado
- Broadcast juntam-se a
- junção externa esquerda
- de união interna
- juntam operador