Руководство. Присоединение данных из нескольких таблиц
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Объединение данных из нескольких таблиц позволяет более полного анализа путем объединения информации из разных источников и создания новых связей между точками данных. В язык запросов Kusto (KQL) операторы соединения и подстановки используются для объединения данных между таблицами.
Из этого руководства вы узнаете, как выполнять следующие задачи:
Примеры в этом руководстве используют таблицуStormEvents
, которая общедоступна в кластере справки. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.
Примеры, приведенные в этом руководстве, используют таблицуStormEvents
, которая общедоступна в примерах данных аналитики погоды.
Необходимые компоненты
Для выполнения следующих запросов требуется среда запроса с доступом к примеру данных. Можно использовать один из следующих способов:
- Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra
- Рабочая область Fabric с емкостью с поддержкой Microsoft Fabric
Использование оператора 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
Выходные данные
Штат |
---|
ОРЕГОН |
ЮТА |
ВАЙОМИНГ |
ВАШИНГТОН |
КОЛОРАДО |
АЙДАХО |
НЕВАДА |
Связанный контент
- Узнайте о различных типах оператора join-operator
- Узнайте, как выполнять запросы между базами данных и несколькими кластерами
- Следуйте инструкциям по созданию геопространственных визуализаций