Compartilhar via


Tutorial: unir dados de várias tabelas

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure 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 KQL (Linguagem de Consulta Kusto), use os operadores de junção e pesquisa para combinar dados entre tabelas.

Neste tutorial, você aprenderá como:

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

Os exemplos neste tutorial usam a StormEvents tabela, que está disponível publicamente nos dados de exemplo da análisemeteorológica.

Pré-requisitos

Execute as consultas em um ambiente de consulta que tenha acesso aos dados de exemplo. Use um dos seguintes:

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

Usar o operador de junção

O banco 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.

Entender 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.

StartTime EndTime EpisodeId EventId Estado EventType ...
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 12,554 68796 MISSISSIPI Ventos de tempestade ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEÓRGIA Ventos de tempestade ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLÂNTICO SUL Tromba de á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
ALASCA 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 tabelas

Junte PopulationData com StormEvents em State para calcular os danos totais à propriedade per capita em cada 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 (externa) na junção: StormEvents. $right refere-se à tabela direita (interna): PopulationData.

Dica

Use o join operador para muitos tipos de junção. Consulte a lista de tipos de junção.

Usar o operador de pesquisa

O operador de pesquisa otimiza consultas que enriquecem uma tabela de fatos com dados de uma tabela de dimensão. Ele estende a tabela de fatos com valores da tabela de dimensão. Por padrão, o sistema pressupõe que a tabela esquerda é a tabela de fatos maior e a tabela direita é a tabela de dimensões menor. Esse padrão é o oposto da pressuposiçã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 tabelas SalesFact 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

ProductCategoryName TotalSales
Jogos e Brinquedos 966782
TV e vídeo 715024
Câmeras e filmadoras 323003
Computadores 313487
Eletrodomésticos 237508
Áudio 192671
Telefones celulares 50342
Livros de música, filmes e áudio 33376

Observação

O lookup operador dá suporte apenas a dois tipos de junção: leftouter e inner.

Unir tabelas geradas por consulta

Unir resultados da mesma tabela.

Suponha que você queira uma lista de estados que tenham eventos de raios e avalanches. Use o operador de junção 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
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA