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

Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

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

В этом руководстве вы узнаете, как:

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

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

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

Запустите запросы в среде запросов с доступом к примеру данных. Используйте один из следующих вариантов:

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

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

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

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

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

StormEvents 
| take 5

В следующей таблице показаны только шесть из 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 в запрос, чтобы визуализировать результат.

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

Если у столбцов есть разные имена (например, StormEvents имеется State и PopulationData имеется StateName), укажите соединение как:

StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName  

$left ссылается на левую (внешнюю) таблицу в соединении: StormEvents. $rightотносится к правой (внутренней) таблице: PopulationData

Совет

Используйте оператор для многих типов соединений 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

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

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