operador lookup
Expande as colunas de uma tabela de factos com valores pesquisados numa tabela de dimensões.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Aqui, o resultado é uma tabela que expande o FactTable
($left
) com dados de DimensionTable
(referenciados por $right
) ao efetuar uma pesquisa de cada par (CommonColumn
,Col
) da tabela anterior com cada par (CommonColumn1
,Col2
) na última tabela.
Para as diferenças entre tabelas de factos e dimensões, veja tabelas de factos e dimensões.
O lookup
operador executa uma operação semelhante ao operador de associação com as seguintes diferenças:
- O resultado não repete colunas da
$right
tabela que são a base para a operação de associação. - Apenas são suportados
leftouter
dois tipos de pesquisa einner
, sendoleftouter
a predefinição. - Em termos de desempenho, o sistema, por predefinição, pressupõe que a
$left
tabela é a tabela maior (factos) e a$right
tabela é a tabela mais pequena (dimensões). Isto é exatamente oposto ao pressuposto utilizado pelojoin
operador. - O
lookup
operador transmite automaticamente a$right
tabela para a$left
tabela (essencialmente, comporta-se como sehint.broadcast
fosse especificado). Isto limita o tamanho da$right
tabela.
Nota
Se o lado direito da pesquisa for maior do que várias dezenas de MBs, a consulta falhará.
Pode executar a seguinte consulta para estimar o tamanho do lado direito em bytes:
rightSide
| summarize sum(estimate_data_size(*))
Syntax
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
RightTable)
on
Conditions
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela ou expressão tabular que é a base para a pesquisa. Indicado como $left . |
Tabela Direita | string |
✔️ | A tabela ou expressão tabular que é utilizada para "preencher" novas colunas na tabela de factos. Indicado 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 a linhas da Tabela Direita. Várias regras são avaliadas com o and operador lógico. Veja Regras. |
kind |
string |
Determina como tratar linhas na Tabela Esquerda que não têm correspondência na Tabela Direita. Por predefinição, leftouter é utilizado, o que significa que todas essas linhas serão apresentadas na saída com valores nulos utilizados para os valores em falta das colunas RightTable adicionadas pelo operador. Se inner for utilizado, essas linhas são omitidas do resultado. Os outros tipos de associação não são suportados pelo lookup operador. |
Regras
Tipo de regra | Syntax | Predicar |
---|---|---|
Igualdade por nome | ColumnName | where LeftTable. ColumnName== Tabela Direita. ColumnName |
Igualdade por valor | $left. LeftColumn== $right. Coluna Direita |
where $left. LeftColumn== $right. *RightColumn |
Nota
Em caso de "igualdade por valor", os nomes das colunas têm de ser qualificados com a tabela de proprietário aplicável indicada por $left
e $right
notações.
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 serão automaticamente renomeadas se existirem conflitos de nomes.
- 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
on
campos que uma linha na outra tabela. - Os Atributos (chaves de pesquisa) só serão apresentados uma vez na tabela de saída.
- Se
kind
não for especificado oukind=leftouter
, além das correspondências internas, existe uma linha para cada linha à esquerda (e/ou direita), mesmo que não tenha correspondência. Nesse caso, as células de saída não correspondentes contêm nulos. - Se
kind=inner
, existe uma linha na saída para cada combinação de linhas correspondentes da esquerda e da direita.
Exemplos
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
Linha | Pessoal | Família | Alias |
---|---|---|---|
1 | Fatura | Portões | faturação |
2 | Fatura | Clinton | billc |
3 | Fatura | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Cozinhar | timc |
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários