Tutorial: Combinación de datos de varias tablas

La combinación de datos de varias tablas permite un análisis más completo mediante la combinación de información de diferentes orígenes y la creación de nuevas relaciones entre puntos de datos. En el Lenguaje de consulta Kusto (KQL), los operadores de combinación y búsqueda se usan para combinar datos entre tablas.

En este tutorial, aprenderá a:

En los ejemplos de este tutorial se usa el clúster de ayuda disponible públicamente. Para explorar con sus propios datos, cree su propio clúster gratuito.

Requisitos previos

  • Una cuenta de Microsoft o Microsoft Entra identidad de usuario para iniciar sesión en el clúster de ayuda

Uso del operador join

Hay dos tablas en la base de datos samples relacionada con los eventos storm. Se llama StormEvents a uno y el otro se denomina PopulationData. En esta sección, combinará las tablas para realizar análisis de datos que no serían posibles solo con una tabla.

Comprensión de los datos

Use el operador take para ver qué datos contiene cada tabla.

StormEvents 
| take 5

En la tabla siguiente se muestran solo 6 de las 22 columnas devueltas.

StartTime EndTime EpisodeId EventId State EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISISIPÍ Viento de tormenta ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Viento de tormenta ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLÁNTICO SUR Tromba de agua ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Lluvia intensa ...
PopulationData 
| take 5

Salida

State Población
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFORNIA 39562900

Ambas tablas contienen una State columna. La StormEvents tabla tiene muchas más columnas y tiene PopulationData una sola columna que contiene el rellenado del estado especificado.

Combinación de las tablas

Una la PopulationData tabla con StormEvents en la columna común State para encontrar el daño total de la propiedad causado por tormentas per cápita por estado.

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

Agregue | render columnchart a la consulta para visualizar el resultado.

Captura de pantalla del gráfico de columnas en la que se muestra el daño de propiedad por estado.

Sugerencia

Hay muchos tipos de combinaciones que puede realizar con el join operador . Vea una lista de sabores de combinación.

Uso del operador de búsqueda

El operador de búsqueda optimiza el rendimiento de las consultas en las que una tabla de hechos se enriquece con datos de una tabla de dimensiones. Extiende la tabla de hechos con valores que se buscan en una tabla de dimensiones. Para obtener el mejor rendimiento, el sistema supone de forma predeterminada que la tabla izquierda es la tabla de hechos más grande y la tabla derecha es la tabla de dimensiones más pequeña. Esto es completamente opuesto a la suposición que usa el operador join.

En el clúster de ayuda, hay otra base de datos denominada ContosoSales que contiene datos de ventas. La consulta siguiente usa lookup para combinar las SalesFact tablas y Products de esta base de datos para obtener el total de ventas por categoría de producto.

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

Salida

ProductCategoryName Ventas totales
Juegos y juguetes 966782
TV y Vídeo 715024
Cámaras de fotos y vídeo 323003
Computers 313487
Electrodomésticos 237508
Audio 192671
Teléfonos móviles 50342
Música, películas y audiolibros 33376

Nota

El lookup operador solo admite dos tipos de combinación: leftouter y inner.

Combinación de tablas generadas por consultas

Las combinaciones también se pueden realizar en función de los resultados de la consulta de la misma tabla.

Supongamos que desea crear una lista de estados en los que se produjeron eventos de rayo y avalancha. Use el operador join para combinar las filas de dos tablas( una que contiene datos sobre eventos lightning y la otra que contiene datos sobre eventos de avalancha) en función de la State columna.

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

Salida

State
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA