Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API выполнения запросов DAX позволяет выполнять DAX-запросы против семантических моделей Power BI и получать результаты программным образом в формате Apache Arrow IPC, столбчатом двоичном формате, разработанном для высокопроизводительной аналитики. Возвращая результаты запроса непосредственно в формате со стрелками, API устраняет затраты на сериализацию и предоставляет приложению доступ к строго типизированным, готовым к анализу данным.
Почему Arrow?
Существующий эндпоинт Execute Queries возвращает результаты в формате JSON. Новая конечная точка "Выполнение запросов DAX" возвращает результаты исключительно в формате Apache Arrow IPC, двоичном формате столбца, предназначенном для высокопроизводительной аналитики. В следующей таблице сравниваются два формата ответа:
| JSON (API выполнения запросов) | Стрелка (API выполнения запросов DAX) | |
|---|---|---|
| Формат | Json с ориентацией на строки | IPC со стрелкой столбца |
| Размер полезных данных | Больше (затраты на кодировку строк) | Меньше (двоичный, сжатый) |
| Точность типов | Потеря (все является строкой или числом) | Без потери (собственная дата, десятичная, int64) |
| Десериализация | Синтаксический анализ + тип coerce | Чтение без копирования в DataFrame |
| лучше всего подходит для | Небольшие запросы, простые интеграции | Большие результирующие наборы, конвейеры аналитики |
Tip
Используйте API выполнения запросов DAX для любого клиентского приложения, которое может использовать двоичные потоки IPC со стрелками. Это включает Python (pyarrow), C# (Apache.Arrow), Java, Rust, Go и другие языки с поддержкой библиотеки со стрелками. Для платформ low-code/no-code, потоков Power Automate или других решений, которые способны обрабатывать JSON, продолжайте использовать раннюю версию Execute Queries API. Хотя API выполнения запросов не имеет расширенных параметров, доступных в запросах DAX (например queryTimeout , и resultsetRowcountLimit), он остается подходящим выбором, если требуется вывод JSON.
Формат IPC Apache Arrow
Apache Arrow определяет формат памяти столбцов, независимо от языка, который широко используется в экосистеме данных, что делает его одним из наиболее широко поддерживаемых представлений данных. Формат потоковой передачи Arrow IPC (межпроцессовое взаимодействие) оборачивает пакеты записей столбцов метаданными схемы, что позволяет:
- Нулевое копирование при чтении — клиенты могут отображать ответ непосредственно в память без анализа или перекачивания данных между буферами.
- поддержка многоязычности — собственные библиотеки существуют для Python (
pyarrow), C# (Apache.Arrow), Java, Rust, Go, JavaScript и других языков, поэтому вы можете использовать результаты практически на любом языке. - Эффективное сжатие — технология LZ4 уменьшает размер полезных данных.
- Проектирование по принципу схемы первым — каждый поток Arrow начинается с сообщения схемы, которое объявляет имена столбцов, типы и метаданные, поэтому клиенты знают точную структуру данных перед чтением строк.
Сопоставление типов DAX с Arrow
API для выполнения DAX-запросов сопоставляет типы данных DAX с Arrow типами следующим образом:
| Тип DAX | Тип стрелки | Примечания |
|---|---|---|
| Целое число | int64 |
Прямое 64-битное целое число |
| Decimal | double |
Двойная точность с плавающей запятой |
| Валюта (фиксированное десятичное значение) | decimal128(19, 4) |
Точность до четырех десятичных знаков без потерь |
| Double | double |
Двойная точность с плавающей запятой |
| DateTime | date64 |
Миллисекунды с начала эпохи Unix |
| Булев | bool |
|
| String | utf8 |
Словарь закодирован по умолчанию для повышения эффективности |
| Binary | binary |
|
| Variant | dense_union |
Объединение int64, currency, bool, date64, float64, utf8 |
Когда следует использовать конечную точку со стрелкой
Используйте конечную точку со стрелкой, когда вы:
- Извлеките более нескольких сотен строк из семантической модели.
- Передайте результаты в pandas, polars, Spark или другие фреймворки обработки столбцов.
- Создайте службу среднего уровня, которая будет проксировать запросы DAX для конечных потребителей.
- Требуются точные числовые типы данных или типы данных дат без необходимости вручного приведения типов.
Для простых, небольших запросов или быстрых временных поисков, где предпочтителен JSON, старый API Execute Queries остается простым выбором.
Рекомендации и ограничения
Перед внедрением API выполнения запросов DAX ознакомьтесь со следующими различиями и ограничениями по сравнению со старым API выполнения запросов:
| API выполнения запросов | Выполнение API запросов DAX | |
|---|---|---|
| Конечная точка | executeQueries |
executeDaxQueries |
| Требование емкости | Работает на Pro, PPU и Premium/Fabric | Только объём Premium или Fabric |
| Параметры клиента | REST API выполнения запросов набора данных (в разделе "Параметры разработчика") | Dataset Execute Queries REST API (в разделе Developer settings) и разрешить конечные точки XMLA и анализ в Excel с локальными семантическими моделями (в разделе Параметры интеграции) необходимы. Разрешить учётным записям служб использовать API Power BI (в разделе Настройки разработчика) требуется только при аутентификации с помощью учётной записи службы. |
| Входные данные запроса |
queries[] массив (один запрос на вызов) |
Одна query строка (несколько EVALUATE инструкций разрешено) |
| Форматы ответов | Только JSON | Только Arrow IPC |
| Дополнительные параметры | Limited |
queryTimeout, resultsetRowcountLimit, , schemaOnly, executionMetricsmemoryLimit |
| Стриминг | Не транслируется | Сквозная потоковая передача (передача с разбивкой на блоки) |
| Ограничения размера результата | Жесткое ограничение в 100 000 строк и 1000 000 значений для каждого запроса | Нет фиксированного ограничения на строки или значения (используйте resultsetRowcountLimit, если требуется ограничение) |
| Разбиение на страницы | Не поддерживаются | Не поддерживается — использование TOPN или resultsetRowcountLimit для больших результатов |
| Требуется библиотека Arrow | Нет (только JSON) | Да— для десериализации ответа требуется библиотека со стрелками (например pyarrow , или Apache.Arrow) |
Связанный контент
- Начало работы с REST API выполнения запросов DAX
- Руководство. Создание службы выполнения запросов DAX среднего уровня
- Учебное пособие: массовая обработка данных с использованием Python для науки о данных
- Лучшие практики для выполнения запросов DAX в REST API
- Справочник по REST API выполнения запросов DAX
- REST API для Power BI