Partilhar 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 uma análise mais abrangente, combinando informações de diferentes fontes e criando novas relações entre os pontos de dados. Na KQL (Linguagem de Consulta Kusto), os operadores de junção e pesquisa são usados 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álise meteorológica.

Pré-requisitos

Para executar as consultas a seguir, você precisa de um ambiente de consulta com acesso aos dados de exemplo. Você pode usar um dos itens a seguir:

  • Uma conta da Microsoft ou identidade de usuário do Microsoft Entra para entrar no cluster de ajuda

Usar o operador de junção

Há duas tabelas no banco de dados Samples relacionadas a eventos de tempestade. Um é chamado StormEvents e o outro é chamado PopulationDatade . Nesta seção, você unirá as tabelas para realizar análises de dados que não seriam possíveis com uma tabela sozinha.

Entender os dados

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

StormEvents 
| take 5

A tabela a seguir mostra apenas 6 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 Thunderstorm Wind ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEÓRGIA Thunderstorm Wind ...
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 contêm uma State coluna. A StormEvents tabela tem muito mais colunas e tem PopulationData apenas uma outra coluna que contém a população do estado especificado.

Junte-se às tabelas

Junte-se à PopulationData tabela na StormEvents coluna comum State para encontrar o total de danos materiais causados por tempestades 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.

Dica

Há muitos tipos de junções que você pode executar com o join operador. Veja uma lista de tipos de junção.

Usar o operador de pesquisa

O operador de pesquisa otimiza o desempenho de consultas em que uma tabela de fatos é enriquecida com dados de uma tabela de dimensões. Ele estende a tabela de fatos com valores pesquisados em uma tabela de dimensões. Para obter o melhor desempenho, o sistema, por padrão, pressupõe que a tabela à esquerda é a tabela de fatos maior e a tabela à direita é a tabela de dimensão menor. Isso é exatamente oposto à suposição usada pelo operador join.

No cluster de ajuda, há outro banco de dados chamado ContosoSales que contém dados de vendas. A consulta a seguir usa lookup para mesclar as SalesFact tabelas e Products desse banco de dados para obter 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
Games and Toys 966782
TV and Video 715024
Cameras and camcorders 323003
Computadores 313487
Home Appliances 237508
Áudio 192671
Telefones celulares 50342
Music, Movies and Audio Books 33376

Observação

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

Unir tabelas geradas por consulta

As junções também podem ser feitas com base nos resultados da consulta da mesma tabela.

Digamos que você queira criar uma lista de estados em que ocorreram eventos de raios e avalanches. Use o operador de junção para mesclar as linhas de duas tabelas, uma contendo dados sobre eventos de relâmpagos e a outra contendo dados sobre eventos de avalanche, com base 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