Azure Data Explorer (Kusto)

Сводка

Item Description
Статус релиза Общая доступность
Products Эксель
Power BI (семантические модели)
Power BI (потоки данных)
Fabric (Dataflow 2-го поколения)
Power Apps (потоки данных)
Dynamics 365 Customer Insights
Поддерживаемые типы проверки подлинности Учетная запись организации
Справочная документация по функциям

Замечание

Некоторые возможности могут присутствовать в одном продукте, но не другие из-за расписаний развертывания и возможностей для конкретного узла.

Предпосылки

Поддерживаемые возможности

  • Import
  • DirectQuery (семантические модели Power BI)
  • Дополнительные параметры
    • Ограничение номера записи результатов запроса
    • Ограничение размера результирующих данных запроса в байтах
    • Отключить усечение результирующих наборов
    • Дополнительные инструкции набора

Подключение к Azure Data Explorer из Power Query Desktop

Чтобы подключиться к Azure Data Explorer из Power Query Desktop, выполните приведенные действия.

  1. Выберите Azure Data Explorer (Kusto) в интерфейсе получения данных. Взаимодействие с данными в Power Query Desktop зависит от приложений. Дополнительные сведения о Power Query Desktop для вашего приложения см. в разделе Где получить данные.

  2. В Azure Data Explorer (Kusto) укажите имя кластера Azure Data Explorer. В этом примере используйте https://help.kusto.windows.net для доступа к примерному кластеру справки. Для других кластеров URL-адрес находится в форме https:// <ClusterName>.<Region.kusto.windows.net>.

    Вы также можете выбрать базу данных, размещенную в кластере, к которому вы подключаетесь, и одну из таблиц в базе данных или запрос, например StormEvents | take 1000.

  3. Если вы хотите использовать какие-либо дополнительные параметры, выберите этот параметр и введите данные для использования с этим параметром. Дополнительные сведения: подключение с помощью дополнительных параметров

    Замечание

    Чтобы отобразить все расширенные параметры и выбор подключения к данным, может потребоваться прокрутить вниз.

  4. Выберите режим подключения данных: Импорт или DirectQuery (только для Power BI Desktop). Дополнительные сведения: при использовании режима импорта или прямого запроса

  5. Для продолжения выберите ОК.

    Снимок экрана: диалоговое окно Azure Data Explorer (Kusto) с URL-адресом для введенного кластера.

  6. Если у вас еще нет подключения к кластеру, нажмите кнопку "Войти". Войдите с помощью учетной записи организации и нажмите кнопку "Подключить".

    Снимок экрана: диалоговое окно входа в Azure Data Explorer с учетной записью организации, готовой к входу.

  7. В Навигаторвыберите информацию из базы данных, затем нажмите Загрузить, чтобы импортировать данные, или Преобразовать данные, чтобы продолжить их преобразование в редакторе Power Query. В этом примере StormEvents был выбран в базе данных Samples.

    Снимок экрана: открытый навигатор и содержащий данные из StormEvents в базе данных Samples.

Подключение к Azure Data Explorer из Power Query Online

Чтобы подключиться к Azure Data Explorer из Power Query Online, выполните приведенные действия.

  1. Выберите параметр Azure Data Explorer (Kusto) в интерфейсе получения данных. Различные приложения имеют различные способы получения данных в Power Query Online. Дополнительные сведения о том, как воспользоваться функцией получения данных в Power Query Online из вашего приложения, см. в разделе Где получить данные.

    Снимок экрана окна

  2. В разделе "Подключение к источнику данных" укажите имя кластера Azure Data Explorer. В этом примере используйте https://help.kusto.windows.net для доступа к примерному кластеру справки. Для других кластеров URL-адрес находится в форме https:// <ClusterName>.<Region.kusto.windows.net>.

    Вы также можете выбрать базу данных, размещенную в кластере, к которому вы подключаетесь, и одну из таблиц в базе данных или запрос, например StormEvents | take 1000.

    Снимок экрана: страница

  3. Если вы хотите использовать какие-либо дополнительные параметры, выберите этот параметр и введите данные для использования с этим параметром. Дополнительные сведения: подключение с помощью дополнительных параметров

  4. При необходимости выберите локальный шлюз данных в шлюзе данных.

  5. Если у вас еще нет подключения к кластеру, нажмите кнопку "Войти". Войдите с помощью учетной записи организации.

  6. После успешного входа нажмите кнопку "Далее".

  7. На странице "Выбор данных" выберите нужную информацию базы данных, а затем нажмите кнопку "Преобразовать данные " или "Далее ", чтобы продолжить преобразование данных в редакторе Power Query. В этом примере StormEvents был выбран в базе данных Samples.

    Снимок экрана: страница выбора данных, содержащая данные из StormEvents в базе данных Samples.

Подключитесь с использованием дополнительных параметров

Power Query Desktop и Power Query Online предоставляют набор дополнительных параметров, которые можно добавить в запрос при необходимости.

В следующей таблице перечислены все дополнительные параметры, которые можно задать в Power Query Desktop и Power Query Online.

Дополнительный параметр Description
Ограничение номера записи результатов запроса Максимальное количество записей, возвращаемых в результате.
Ограничение размера результирующих данных запроса в байтах Максимальный размер данных в байтах, возвращаемых в результате.
Отключить усечение результирующих наборов Включите или отключите усечение результатов с помощью notruncation параметра запроса.
Дополнительные инструкции установок Устанавливает параметры запроса, связанные с его длительностью. Параметры запроса определяют, как выполняется запрос и возвращает результаты. Несколько инструкций Set можно разделить точками с запятой.

Дополнительные сведения о дополнительных дополнительных параметрах, недоступных в пользовательском интерфейсе Power Query, см. в разделе "Настройка параметров соединителя Azure Data Explorer" в запросе M.

Когда используется режим импорта или прямого запроса

В режиме импорта данные перемещаются в Power BI. В режиме DirectQuery данные запрашиваются непосредственно из кластера.

Используйте режим импорта, если:

  • Набор данных мал.
  • Вам не нужны данные практически в режиме реального времени.
  • Данные уже агрегированы или вы выполняете агрегирование в Kusto.

Используйте режим DirectQuery, когда:

  • Набор данных очень велик.
  • Вам нужны практически данные в режиме реального времени.

Дополнительные сведения об использовании DirectQuery см. в разделе "Сведения об использовании DirectQuery" в Power BI.

Советы по использованию соединителя Azure Data Explorer для запроса данных

В следующих разделах приведены советы и рекомендации по использованию языка запросов Kusto с Power Query.

Сложные запросы в Power BI

Сложные запросы проще выразить в Kusto, чем в Power Query. Они должны быть реализованы как функции Kusto и вызываться в Power BI. Этот метод требуется при использовании DirectQuery с операторами let в запросе Kusto. Поскольку Power BI объединяет два запроса, а операторы let нельзя использовать с оператором join, могут возникать синтаксические ошибки. Поэтому сохраните каждую часть соединения как функцию Kusto и разрешите Power BI объединить эти две функции вместе.

Как симулировать оператор для работы с относительными датами и временем

Power Query не содержит относительный оператор даты и времени, например ago(). Чтобы имитировать ago(), используйте сочетание функций DateTime.FixedLocalNow и #duration Power Query M.

Вместо этого запроса с помощью ago() оператора:

    StormEvents | where StartTime > (now()-5d)
    StormEvents | where StartTime > ago(5d)

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

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
    #"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
    #"Filtered Rows"

Настройка параметров соединителя Azure Data Explorer в запросе M

Параметры соединителя Azure Data Explorer можно настроить из расширенного редактора Power Query на языке запросов M. С помощью этих параметров можно управлять созданным запросом, который отправляется в кластер Azure Data Explorer.

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
    Source

В запросе M можно использовать любой из следующих параметров:

Вариант Sample Description
MaxRows [MaxRows=300000] Добавляет инструкцию truncationmaxrecords set в запрос. Переопределяет максимальное число записей по умолчанию, которые запрос может вернуть вызывающему объекту (обрезка).
MaxSize [MaxSize=4194304] Добавляет инструкцию truncationmaxsize set в запрос. Переопределяет максимальный размер данных по умолчанию, который может быть возвращен вызывающему (усечение).
NoTruncate [NoTruncate=true] Добавляет инструкцию notruncation set в запрос. Включает подавление усечения результатов запроса, возвращенных вызвавшей стороне.
Дополнительные значенияSetStatements [AdditionalSetStatements="set query_datascope=hotcache"] Добавляет указанные инструкции набора в запрос. Эти инструкции используются для задания параметров запроса в течение длительности запроса. Параметры запроса определяют, как выполняется запрос и возвращает результаты.
CaseInsensitive [CaseInsensitive=true] Создает соединитель запросы, которые являются нечувствительными к регистру— запросы используют =~ оператор вместо == оператора при сравнении значений.
ForceUseContains [ForceUseContains=true] Делает так, чтобы соединитель генерировал запросы, использующие contains вместо значения по умолчанию has при работе с текстовыми полями. Хотя has гораздо более производителен, он не поддерживает подстроки. Дополнительные сведения о разнице между двумя операторами см. в строковых операторах.
Таймаут [Timeout=#duration(0,10,0,0)] Настраивает время ожидания клиента и сервера для заданной длительности запроса.
КлиентскийИдентификаторЗапросаPrefix [ClientRequestIdPrefix="MyReport"] Настраивает префикс ClientRequestId для всех запросов, отправленных соединителем. Это позволяет идентифицировать запросы в кластере как поступающие из определенного отчета и (или) источника данных.

Замечание

Вы можете объединить несколько параметров, чтобы достичь требуемого поведения: [NoTruncate=true, CaseInsensitive=true]

Достижение ограничений запросов Kusto

Запросы Kusto возвращаются по умолчанию до 500 000 строк или 64 МБ, как описано в ограничениях запросов. Эти параметры можно переопределить с помощью дополнительных параметров в окне подключения Azure Data Explorer (Kusto ):

Снимок экрана: окно подключения Azure Data Explorer (Kusto) с выделенными дополнительными параметрами.

Эти параметры задают инструкции набора с запросом, чтобы изменить ограничения запросов по умолчанию:

  • Ограничение числа записей результатов запроса создает set truncationmaxrecords
  • Ограничение размера результатов запроса в байтах создает set truncationmaxsize
  • Отключение усечения результирующих наборов создает set notruncation

Конфиденциальность регистра

По умолчанию соединитель создает запросы, использующие регистрозависимый оператор == при сравнении строковых значений. Если данные не зависят от регистра, это нежелательное поведение. Чтобы изменить созданный запрос, используйте CaseInsensitive параметр соединителя:

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
    #"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
    #"Filtered Rows"

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

Параметры запроса можно использовать для динамического изменения запроса.

Использование параметра запроса в шагах запроса

Параметр запроса можно использовать в любом шаге запроса, поддерживающем его. Например, отфильтруйте результаты на основе значения параметра. В этом примере выберите выпадающее меню в правой части State столбца в редакторе Power Query, выберите "Текстовые фильтры>равно", а затем выберите ALABAMA в подразделе 'Оставить строки, где 'Штат'.

Снимок экрана: диалоговое окно

Предоставление параметров функции Azure Data Explorer

Функции Kusto — отличный способ поддерживать сложные запросы языка запросов Kusto (KQL). Мы рекомендуем использовать функции вместо внедрения KQL в Power Query. Основное преимущество использования функции заключается в том, что логика поддерживается в одном месте в легко создаваемой и тестируемой среде.

Функции также могут принимать параметры, и поэтому добавляют много гибкости пользователям Power BI. Power BI имеет множество способов срезать данные. Но все фильтры и срезы добавляются после исходного KQL и во многих случаях вы хотите использовать фильтрацию на ранней стадии запроса. Использование функций и динамических параметров является очень эффективным способом настройки окончательного запроса.

Создание функции

Вы можете создать следующую функцию в любом кластере Azure Data Explorer, к которому у вас есть доступ, включая бесплатный кластер. Функция возвращает таблицу SalesTable из справочного кластера, отфильтрованную по транзакциям продаж, которые больше или меньше числа, предоставленного пользователем отчета.

.create-or-alter  function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
    cluster("help").database("ContosoSales").SalesTable
    | where  (Op==">" and SalesAmount >= Cutoff) or (Op=="<"  and SalesAmount <= Cutoff)
}

После создания функции его можно протестировать с помощью:

LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country

Вы также можете протестировать его с помощью:

LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Использование функции в Power BI
  1. Подключитесь к кластеру, где вы создали функцию.

  2. В навигаторе Power Query выберите функцию из списка объектов. Коннектор анализирует параметры и отображает их над данными с правой стороны навигатора.

    Снимок экрана с параметрами Cutoff и Op, отображенными над данными в навигаторе.

  3. Добавьте значения в параметры и нажмите кнопку "Применить".

  4. После отображения предварительного просмотра выберите "Преобразовать данные".

  5. Как только вы окажетесь в редакторе Power Query, создайте два параметра: один для значения отсечения и другой для оператора.

  6. Вернитесь к LargeOrSmallSales запросу и замените значения параметрами запроса в строке формул.

    Снимок экрана: функция LargeOrSmallSales с акцентом на параметры Cutoff_Param и Op_Param в строке формул.

  7. В редакторе создайте две статические таблицы (ввод данных), чтобы предоставить параметры для двух параметров. Для отсечения можно создать таблицу со значениями, такими как 10, 50, 100, 200, 500, 1000, 2000. Op, таблица с двумя текстовыми значениями < и >.

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

    Снимок экрана привязки Op к параметру Op_Param.

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

Снимок экрана в Power BI с выбранными значениями

Базовая таблица сначала фильтруется, а затем агрегируется.

Использование параметра запроса в сведениях о подключении

Используйте параметр запроса для фильтрации информации в запросе и оптимизации производительности запросов.

В расширенном редакторе:

  1. Найдите следующий раздел запроса:

    Source = AzureDataExplorer.Contents("<Cluster>", "Database<",> "<Query>", [])

    Рассмотрим пример.

    Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
    
  2. Вставьте параметр запроса в запрос языка запросов Kusto (KQL).

    Если вставить запрос KQL непосредственно в диалоговом окне подключения, запрос будет частью исходного шага в Power Query. Параметры можно внедрить в состав запроса с помощью расширенного редактора или при редактировании исходной инструкции в строке формул. Примером может быть StormEvents | where State == ' " & State & " ' | take 100запрос. State является параметром и во время выполнения запрос будет:

    StormEvents | where State == 'ALABAMA' | take 100

  3. Если запрос содержит кавычки, закодируйте их правильно. Например, следующий запрос в KQL:

    "StormEvents | where State == "ALABAMA" | take 100"
    

    появится в расширенном редакторе следующим образом с двумя кавычками:

     "StormEvents | where State == ""ALABAMA"" | take 100"
    

    Если используется параметр, например State, его следует заменить следующим запросом, который содержит три кавычки:

    "StormEvents | where State == """ & State & """ | take 100"
    

Использование Value.NativeQuery для функций Azure Data Explorer

Чтобы использовать функцию Azure Data Explorer, которая не поддерживается в Power Query, используйте метод Value.NativeQuery в Power Query M. Этот метод вставляет фрагмент языка запросов Kusto в созданный запрос, а также может использоваться для повышения контроля над выполненным запросом.

В следующем примере показано, как использовать функцию percentiles в Azure Data Explorer:

let
    StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
    Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
    Percentiles

Не используйте планировщик обновления данных Power BI для выдачи команд управления Kusto

Power BI включает планировщик обновления данных, который может периодически выдавать запросы к источнику данных. Этот механизм не следует использовать для планирования команд управления в Kusto, так как Power BI предполагает, что все запросы доступны только для чтения.