innerunique junte-se
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
O sabor de junção innerunique
remove teclas duplicadas do lado esquerdo. Esse comportamento garante que a saída contenha uma linha para cada combinação de teclas exclusivas esquerda e direita.
Por padrão, o sabor de junção innerunique
é usado se o parâmetro kind
não for especificado. Essa implementação padrão é útil em cenários de análise de log/rastreamento, onde você pretende correlacionar dois eventos com base em uma ID de correlação compartilhada. Ele permite que você recupere todas as instâncias do fenômeno, desconsiderando registros de rastreamento duplicados que contribuem para a correlação.
Sintaxe
LeftTable|
join
kind=innerunique
[ Dicas ] RightTableon
Condições
Saiba mais sobre convenções de sintaxe.
Parâmetros
Designação | Tipo | Necessário | Descrição |
---|---|---|---|
LeftTable | string |
✔️ | A tabela esquerda ou expressão tabular, às vezes chamada de tabela externa, cujas linhas devem ser mescladas. Denotado como $left . |
Dicas | string |
Zero ou mais dicas de junção separadas por espaço na forma de Nome= Valor que controlam o comportamento da operação de correspondência de linhas e do plano de execução. Para obter mais informações, consulte Dicas. |
|
RightTable | string |
✔️ | A tabela direita ou expressão tabular, às vezes chamada de tabela interna, cujas linhas devem ser mescladas. Denotado como $right . |
Condições | string |
✔️ | Determina como as linhas de LeftTable são correspondidas com as linhas de RightTable. Se as colunas que você deseja corresponder tiverem o mesmo nome em ambas as tabelas, use a sintaxe ON ColumnName. Caso contrário, use a sintaxe ON $left. LeftColumn== $right. RightColumn. Para especificar várias condições, você pode usar a palavra-chave "e" ou separá-las com vírgulas. Se você usar vírgulas, as condições serão avaliadas usando o operador lógico "e". |
Dica
Para obter o melhor desempenho, se uma mesa for sempre menor que a outra, use-a como o lado esquerdo da junção.
Dicas
Nome dos parâmetros | Valores | Descrição |
---|---|---|
hint.remote |
auto , left , local , right |
Consulte de ingresso entre clusters |
hint.strategy=broadcast |
Especifica a maneira de compartilhar a carga de consulta em nós de cluster. | Veja transmissão participar |
hint.shufflekey=<key> |
A consulta shufflekey compartilha a carga de consulta em nós de cluster, usando uma chave para particionar dados. |
Consulte consulta aleatória |
hint.strategy=shuffle |
A consulta de estratégia shuffle compartilha a carga de consulta em nós de cluster, onde cada nó processa uma partição dos dados. |
Consulte consulta aleatória |
Devoluções
Esquema: Todas as colunas de ambas as tabelas, incluindo as teclas correspondentes.
Linhas: Todas as linhas desduplicadas da tabela esquerda que correspondem às linhas da tabela direita.
Exemplos
Reveja os exemplos e execute-os na página de consulta do Data Explorer.
Use a junção innerunique padrão
A consulta de exemplo combina linhas das tabelas X e Y onde as teclas coincidem, mostrando apenas as linhas que existem em ambas as tabelas
let X = datatable(Key:string, Value1:long)
[
'a',1,
'b',2,
'b',3,
'c',4
];
let Y = datatable(Key:string, Value2:long)
[
'b',10,
'c',20,
'c',30,
'd',40
];
X | join Y on Key
Output
Chave | Valor1 | Chave1 | Valor2 |
---|---|---|---|
b | 2 | b | 10 |
c | 4 | c | 20 |
c | 4 | c | 30 |
Observação
As teclas 'a' e 'd' não aparecem na saída, uma vez que não havia teclas correspondentes nos lados esquerdo e direito.
A consulta executou a junção padrão, que é uma junção interna depois de desduplicar o lado esquerdo com base na chave de junção. A desduplicação mantém apenas o primeiro registo. O lado esquerdo resultante da junção após a desduplicação é:
Chave | Valor1 |
---|---|
um | 1 |
b | 2 |
c | 4 |
Duas saídas possíveis da junção innerunique
Observação
O sabor innerunique
junção pode produzir duas saídas possíveis e ambas estão corretas.
Na primeira saída, o operador de junção selecionou aleatoriamente a primeira chave que aparece em t1, com o valor "val1.1" e combinou-a com as chaves t2.
Na segunda saída, o operador de junção selecionou aleatoriamente a segunda chave que aparece em t1, com o valor "val1.2" e combinou-a com as chaves t2.
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
Output
chave | valor | Chave1 | valor1 |
---|---|---|---|
1 | val1,1 | 1 | val1,3 |
1 | val1,1 | 1 | val1,4 |
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
Output
chave | valor | Chave1 | valor1 |
---|---|---|---|
1 | val1,2 | 1 | val1,3 |
1 | val1,2 | 1 | val1,4 |
- Kusto é otimizado para empurrar filtros que vêm após o
join
, para o lado de junção apropriado, esquerda ou direita, quando possível. - Às vezes, o sabor usado é interno e o filtro é propagado para o lado esquerdo da junção. O sabor é propagado automaticamente e as chaves que se aplicam a esse filtro aparecem na saída.
- Use o exemplo anterior e adicione um filtro
where value == "val1.2"
. Ele dá o segundo resultado e nunca dará o primeiro resultado para os conjuntos de dados:
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
| where value == "val1.2"
Output
chave | valor | Chave1 | valor1 |
---|---|---|---|
1 | val1,2 | 1 | val1,3 |
1 | val1,2 | 1 | val1,4 |
Obtenha atividades de início de sessão alargadas
Obtenha atividades estendidas a partir de um login
que algumas entradas marcam como o início e o fim de uma atividade.
let Events = MyLogTable | where type=="Event" ;
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime, StopTime, Duration = StopTime - StartTime
let Events = MyLogTable | where type=="Event" ;
Events
| where Name == "Start"
| project Name, City, ActivityIdLeft = ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityIdRight = ActivityId)
on $left.ActivityIdLeft == $right.ActivityIdRight
| project City, ActivityId, StartTime, StopTime, Duration = StopTime - StartTime
Conteúdo relacionado
- Saiba mais sobre outros juntar sabores