Поделиться через


Руководство. Присоединение данных из нескольких таблиц

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Объединение данных из нескольких таблиц позволяет более полного анализа путем объединения информации из разных источников и создания новых связей между точками данных. В язык запросов Kusto (KQL) операторы соединения и подстановки используются для объединения данных между таблицами.

Из этого руководства вы узнаете, как выполнять следующие задачи:

Примеры в этом руководстве используют таблицуStormEvents, которая общедоступна в кластере справки. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.

Примеры, приведенные в этом руководстве, используют таблицуStormEvents, которая общедоступна в примерах данных аналитики погоды.

Необходимые компоненты

Для выполнения следующих запросов требуется среда запроса с доступом к примеру данных. Можно использовать один из следующих способов:

  • Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra для входа в кластер справки

Использование оператора Join

В базе данных примеров есть две таблицы, связанные с событиями шторма. Один вызывается StormEvents , а другой называется PopulationData. В этом разделе вы присоединитесь к таблицам для выполнения анализа данных, которые не будут возможны только в одной таблице.

Используемые данные

Используйте оператор принятия, чтобы узнать, какие данные содержатся в каждой таблице.

StormEvents 
| take 5

В следующей таблице показаны только 6 из 22 возвращенных столбцов.

Время начала EndTime EpisodeId EventId Штат EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Торнадо ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 МИССИСИПИ Ураганный ветер ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 ДЖОРДЖИЯ Ураганный ветер ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ЮЖНАЯ АТЛАНТИКА Waterspout ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Ливень ...
PopulationData 
| take 5

Выходные данные

Штат Население
АЛАБАМА 4918690
АЛЯСКА 727951
АРИЗОНА 7399410
АРКАНЗАС 3025880
CALIFORNIA 39562900

Обе таблицы содержат State столбец. В StormEvents таблице много столбцов, а PopulationData в таблице есть только один другой столбец, содержащий население заданного состояния.

Присоединение таблиц

Присоединитесь к PopulationData таблице с StormEvents State общим столбцом, чтобы найти общий ущерб собственности, вызванный штормами на душу населения по состоянию.

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

Добавьте | render columnchart в запрос, чтобы визуализировать результат.

Снимок экрана: гистограмма с повреждением имущества на душу населения по состоянию.

Совет

Существует множество типов соединений, которые можно выполнить с join помощью оператора. См. список вкусов соединения.

Использование оператора подстановки

Оператор подстановки оптимизирует производительность запросов, в которых таблица фактов обогащена данными из таблицы измерений. Она расширяет таблицу фактов со значениями, которые находятся в таблице измерений. Для повышения производительности система по умолчанию предполагает, что левая таблица является большей таблицей фактов, а справа — меньшей таблицей измерений. Это совершенно противоположно предположению, используемому оператором join .

В кластере справки есть другая база данных ContosoSales , которая содержит данные о продажах. Следующий запрос используется lookup для объединения SalesFact таблиц из Products этой базы данных для получения общего объема продаж по категориям продуктов.

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

Выходные данные

ProductCategoryName TotalSales
Игры и игрушки 966782
Телевизоры и видеотехника 715024
Фото- и видеокамеры 323003
Компьютеры 313487
Бытовая техника 237508
Аудио 192671
Мобильные телефоны 50342
Музыка, фильмы и аудиокниги 33376

Примечание.

Оператор lookup поддерживает только два варианта соединения: leftouter и inner.

Присоединение таблиц, созданных запросом

Соединения также можно выполнить на основе результатов запроса из той же таблицы.

Предположим, вы хотите создать список состояний, в которых произошли события молнии и лавины. Используйте оператор соединения для объединения строк двух таблиц , содержащих данные о событиях молнии и других, содержащих данные о событиях лавины на основе столбца State .

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

Выходные данные

Штат
ОРЕГОН
ЮТА
ВАЙОМИНГ
ВАШИНГТОН
КОЛОРАДО
АЙДАХО
НЕВАДА