Partilhar via


Tutorial: unir dados de várias tabelas

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A junção de dados de várias tabelas permite analisar dados entre fontes e criar relações entre pontos de dados. Na Kusto Query Language (KQL), use os operadores de junção e pesquisa para combinar dados entre tabelas.

Neste tutorial, aprenderás como:

Os exemplos neste tutorial usam a tabela StormEvents, a qual está disponível publicamente no cluster de ajuda. Para explorar com os seus próprios dados, crie o seu próprio cluster gratuito.

Os exemplos neste tutorial usam a tabela StormEvents, que está disponível publicamente no Weather analyticsdados de exemplo.

Pré-requisitos

Execute as consultas em um ambiente de consulta que tenha acesso aos dados de exemplo. Use uma das seguintes opções:

  • Conta da Microsoft ou identidade de usuário do Microsoft Entra para entrar no cluster de ajuda
  • Uma conta Microsoft ou identidade de utilizador do Microsoft Entra
  • Espaço de trabalho do Fabric com capacidade habilitada para o Microsoft Fabric

Use o operador de junção

A base de dados Exemplos tem duas tabelas de eventos de tempestade relacionadas: StormEvents e PopulationData. Nesta seção, você os une para analisar dados que não são possíveis apenas com uma tabela.

Entenda os dados

Use o operador take para ver quais dados cada tabela contém.

StormEvents 
| take 5

A tabela a seguir mostra apenas seis das 22 colunas retornadas.

Horário de Início Hora de Fim EpisodeId ID do Evento Estado Tipo de Evento ...
2007/09/20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLÓRIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Vento de Tempestade com Trovoada ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEÓRGIA Vento de Tempestade com Trovoada ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLÂNTICO SUL Tromba d'água ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLÓRIDA Chuva forte ...
PopulationData 
| take 5

Saída

Estado População
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFÓRNIA 39562900

Ambas as tabelas têm uma State coluna. StormEvents tem muito mais colunas, e PopulationData tem uma outra coluna com a população do estado.

Junte-se às mesas

Combine PopulationData com StormEvents em State para calcular o total de dano de propriedade per capita por estado.

StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita

Adicione | render columnchart à consulta para visualizar o resultado.

Captura de tela do gráfico de colunas mostrando danos materiais per capita por estado.

Se as colunas tiverem nomes diferentes (por exemplo, StormEvents tem State e PopulationData tem StateName), especifique a junção como:

StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName  

$left refere-se à tabela esquerda (exterior) na junção: StormEvents. $right refere-se à tabela direita (interna): PopulationData.

Dica

Use o join operador para muitos tipos de junção. Veja a lista de tipos de junções.

Utilizar o operador de pesquisa

O operador de pesquisa otimiza consultas que enriquecem uma tabela de fatos com dados de uma tabela de dimensão. Esta operação estende a tabela de fatos com valores da tabela de dimensão. Por padrão, o sistema assume que a tabela esquerda é a tabela de fatos maior e a tabela direita é a tabela de dimensão menor. Esse padrão é o oposto da suposição do operador join.

O cluster de ajuda inclui um banco de dados nomeado ContosoSales com dados de vendas. A consulta a seguir usa lookup para mesclar as SalesFact tabelas e Products para retornar o total de vendas por categoria de produto.

SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc

Saída

NomeDaCategoriaDoProduto Vendas totais
Jogos e Brinquedos 966782
TV e Vídeo 715024
Câmaras e câmaras de vídeo 323003
Computadores 313487
Eletrodomésticos 237508
Áudio 192671
Telemóveis 50342
Música, filmes e audiolivros 33376

Observação

O operador lookup suporta apenas dois tipos de junção: leftouter e inner.

Ingressar em tabelas geradas por consultas

Junte os resultados da mesma tabela.

Suponha que você queira uma lista de estados que têm eventos de raios e avalanches. Use o operador join para mesclar linhas de duas consultas que retornam estados distintos para cada tipo de evento na State coluna.

StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
    StormEvents 
    | where EventType == "Avalanche"
    | distinct State
    )
    on State
| project State

Saída

Estado
OREGÃO
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA