Я работаю в Microsoft уже несколько лет, являясь частью команды Azure Data Explorer (ADX). Хотя я в основном работаю за кулисами над плоскостью управления службой, одной из моих обязанностей является коннектор Power BI для Azure Data Explorer. Этот коннектор представляет собой более новый коннектор на базе M. Его цель — позволить вам легко выполнять запросы к кластеру ADX в режиме импорта или прямого запроса и генерировать запросы на родном языке запросов Kusto Query Language (KQL). Коннектор позволяет работать в основном в Power BI, если это ваша чашка чая, но также поддерживает более сложные сценарии, если вы любитель Azure Data Explorer / KQL.
В этой серии статей я буду использовать один из наших демонстрационных кластеров Azure Data Explorer — он содержит базу данных под названием «Samples», в которой есть таблица «StormEvents», содержащая список произошедших штормовых событий вместе с их деталями. Хотя в таблице всего около 65K строк (ADX способен обрабатывать миллиарды строк без каких-либо проблем), она вполне подойдет для того, что я хочу вам показать.
Получение данных из Azure Data Explorer
Давайте начнем с чего-то простого. Я создам новый источник данных и выберу в качестве источника «Azure Data Explorer (Kusto)»:
Затем я укажу URL запроса моего кластера. На данном этапе я могу просто нажать кнопку «Connect» и использовать пользовательский интерфейс для выбора базы данных и таблицы (или функции, подробнее об этом в следующем посте). Однако, как правило, результаты будут лучше, если вы укажете базу данных и таблицу или запрос вручную:
Обратите внимание, что я выбрал загрузку данных в режиме прямого запроса. Не вдаваясь в подробности, я обычно использую режим импорта для таблиц измерений и режим прямого запроса для фактов. Этот способ также рекомендуется использовать, если у вас большие данные или если вам нужны данные в отчете практически в реальном времени.
Созданный запрос M выглядит следующим образом:
let
Source = AzureDataExplorer.Contents("https://XXX.kusto.windows.net", "Samples", "StormEvents", [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null])
in
Source
Я обсужу значение различных настроек в одной из следующих статей. Достаточно сказать, что URL-адрес кластера, имя базы данных и имя таблицы, которые я предоставил, были использованы для вызова метода AzureDataExplorer.Contents().
Отображение данных в отчете PowerBI
На этом этапе данные готовы к загрузке в мой отчет:
Теперь я могу использовать данные для добавления некоторых визуализаций. Я начну с добавления пары фильтров, один для штата, а другой для источника — оба являются столбцами измерений, с которыми мы еще встретимся, когда будем обсуждать таблицы измерений:
Наконец, я добавлю круговую диаграмму, показывающую, сколько у нас событий каждого типа:
Я использовал столбец EventType в области «Легенда», а столбец EventId для области Значения. Обратите внимание, как EventId агрегируется для подсчета количества значений. В данном случае я мог бы использовать любой столбец.
Если вы посмотрите на запросы, отправляемые на ваш кластер Azure Data Explorer, вы увидите, что PBI с помощью коннектора ADX сгенерировал примерно следующие запросы (для двух фильтров и круговой диаграммы):
StormEvents
| project ["State"]
| summarize by ["State"]
| order by ["State"] asc
| limit 101
StormEvents
| project ["Source"]
| summarize by ["Source"]
| order by ["Source"] asc
| limit 101
StormEvents
| summarize ["a0"]=countif(isnotnull(["EventId"])) by ["EventType"]
| limit 1000001
В следующей статье я расскажу об использовании комбинации режима импорта и прямого запроса для работы с размерными значениями и повышения производительности ваших отчетов.