Tutorial: Unir dados de várias tabelas
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 pontos de dados. No Kusto Query Language (KQL), os de junção e operadores de de pesquisa são usados para combinar dados entre tabelas.
Neste tutorial, você aprenderá a:
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
Para executar as consultas a seguir, você precisa de um ambiente de consulta com acesso aos dados de exemplo. Você pode usar uma das seguintes opções:
- Uma conta Microsoft ou identidade de utilizador do Microsoft Entra
- Um espaço de trabalho do Fabric com uma capacidade de com suporte para Microsoft Fabric
Use o operador de junção
Há duas tabelas no banco de dados Samples relacionadas a eventos de tempestade. Um chama-se StormEvents
e o outro chama-se PopulationData
. Nesta seção, você unirá as tabelas para executar análises de dados que não seriam possíveis com uma única 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 6 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 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 contêm uma coluna State
. A tabela StormEvents
tem muito mais colunas, e a PopulationData
tem apenas uma outra coluna que contém a população de determinado estado.
Junte-se às mesas
Junte a tabela PopulationData
com StormEvents
na coluna comum State
para encontrar o total de danos materiais causados por tempestades por estado per capita.
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.
Se as colunas tiverem nomes diferentes, por exemplo, StormEvents
tiver State
e PopulationData
tiver StateName
, especifique a junção da seguinte forma:
StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName
$left
é a tabela à esquerda ou no lado externo do operador de junção, neste caso StormEvents
.
$right
é a tabela à direita, ou no lado interior do operador de junção, neste caso PopulationData
.
Dica
Há muitos tipos de junções que você pode executar com o operador join
. Veja uma lista de combinações de sabores.
Utilizar o operador de pesquisa
O operador de pesquisa otimiza o desempenho das consultas em casos em que uma tabela de factos é enriquecida com dados de uma tabela de dimensão. Estende-se a tabela de factos com valores que são procurados numa tabela de dimensões. Para obter o melhor desempenho, o sistema, por padrão, assume que a tabela esquerda é a tabela de fatos maior e a tabela direita é a tabela de dimensão menor. Isso é exatamente o oposto da suposição que é 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 tabelas SalesFact
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
Output
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
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 join para mesclar as linhas de duas tabelas, uma contendo dados sobre eventos relâmpagos e outra contendo dados sobre eventos de avalanche, com base na coluna State
.
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 |
Conteúdo relacionado
- Saiba mais sobre os diferentes tipos de operadores de junção
- Saiba como executar consultas entre bancos de dados e entre clusters
- Siga o tutorial criar visualizações geoespaciais