operador lookup
Estende as colunas de uma tabela de fatos com valores pesquisados em uma tabela de dimensões.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Aqui, o resultado é uma tabela que estende o FactTable
($left
) com dados de DimensionTable
(referenciado por $right
) executando 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 fatos e dimensões, consulte tabelas de fatos e dimensões.
O lookup
operador executa uma operação semelhante ao operador join com as seguintes diferenças:
- O resultado não repete colunas da
$right
tabela que são a base para a operação de junção. - Há suporte apenas para dois tipos de pesquisa,
leftouter
einner
, sendoleftouter
o padrão. - Em termos de desempenho, o sistema, por padrão, pressupõe que a
$left
tabela é a tabela maior (fatos) e a$right
tabela é a tabela menor (dimensões). Isso é exatamente oposto à suposição usada pelo operadorjoin
. - O
lookup
operador transmite automaticamente a$right
tabela para a$left
tabela (essencialmente, se comporta como se tivessehint.broadcast
sido especificado). Isso limita o tamanho da$right
tabela.
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(*))
Syntax
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
Condiçõesde RightTable)
on
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela ou expressão tabular que é a base para a pesquisa. Indicada como $left . |
RightTable | string |
✔️ | A tabela ou expressão tabular usada para "popular" novas colunas na tabela de fatos. Indicada 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 . Confira 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 aparecerão na saída com valores nulos usados para os valores ausentes das colunas RightTable adicionadas pelo operador . Se inner for usado, essas linhas serão omitidas da saída. Não há suporte para outros tipos de junção pelo lookup operador . |
Regras
Tipo de regra | Syntax | Predicado |
---|---|---|
Igualdade por 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 de coluna devem ser qualificados com a tabela de proprietário aplicável indicada por $left
notações e $right
.
Retornos
Uma tabela com:
- Uma coluna para cada coluna em cada uma das duas tabelas, incluindo as chaves correspondentes. As colunas do lado direito serão renomeada automaticamente 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 da outra tabela. - Os Atributos (chaves de pesquisa) serão exibidos apenas uma vez na tabela de saída.
- Se
kind
não for especificado oukind=leftouter
, além das correspondências internas, haverá uma linha para cada linha à esquerda (e/ou à direita), mesmo que ela não tenha nenhuma correspondência. Nesse caso, as células de saída sem correspondência contêm valores nulos. - Se
kind=inner
, haverá 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 | Bill | Portões | billg |
2 | Bill | Clinton | billc |
3 | Bill | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Cozinhar | timc |
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de