Руководство. Объединение данных из нескольких таблиц
Объединение данных из нескольких таблиц обеспечивает более полный анализ за счет объединения информации из разных источников и создания новых связей между точками данных. В язык запросов Kusto (KQL) операторы соединения и поиска используются для объединения данных между таблицами.
Из этого руководства вы узнаете, как выполнять следующие задачи:
В примерах в этом руководстве используется общедоступный кластер справки. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.
Предварительные требования
- Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra для входа в кластер справки
Использование оператора Join
В базе данных Samples есть две таблицы, связанные с событиями storm. Один называется StormEvents
, а другой — PopulationData
. В этом разделе вы соедините таблицы для выполнения анализа данных, который невозможно выполнить только с одной таблицей.
Используемые данные
Используйте оператор take для просмотра данных, содержащихся в каждой таблице.
StormEvents
| take 5
В следующей таблице показаны только 6 из 22 возвращенных столбцов.
StartTime | EndTime | EpisodeId | EventId | Состояние | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | Флорида | Ураган | ... |
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 | ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ | Торнадо | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | Флорида | Сильный ливень | ... |
PopulationData
| take 5
Выходные данные
Состояние | Заполнение |
---|---|
АЛАБАМА | 4918690 |
АЛЯСКА | 727951 |
АРИЗОНА | 7399410 |
АРКАНЗАС | 3025880 |
Калифорния | 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
.
Объединение таблиц, созданных запросом
Соединения также можно выполнять на основе результатов запроса из той же таблицы.
Предположим, вы хотите создать список состояний, в которых произошли события молнии и лавины. Используйте оператор join для объединения строк двух таблиц( одна из них содержит данные о событиях молнии, а другая — данные о событиях лавины) на основе столбца State
.
StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
StormEvents
| where EventType == "Avalanche"
| distinct State
)
on State
| project State
Выходные данные
Состояние |
---|
ОРЕГОН |
ЮТА |
ВАЙОМИНГ |
ВАШИНГТОН |
КОЛОРАДО |
АЙДАХО |
НЕВАДА |
См. также
- Сведения о различных типах операторов соединения
- Узнайте, как выполнять межбазовые и кластерные запросы
- Следуйте инструкциям в руководстве по созданию геопространственных визуализаций .
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по