Свертывание запросов Power Query
Эта статья предназначена для моделей данных, разрабатывающих модели в Power Pivot или Power BI Desktop. В нем описывается, что такое Power Query свертывание запросов и почему это важно в макетах модели данных. В этой статье также описываются источники данных и преобразования, которые могут выполнять свертывание запросов, а также способы определения того, что Power Query запросы могут быть сложены ( полностью или частично).
Свертывание запросов — это возможность Power Query запроса создать одну инструкцию запроса для извлечения и преобразования исходных данных. Подсистема гибридных приложений Power Query стремится добиться свертывание запросов по мере возможности по соображениям эффективности.
Возможность свертывания запросов играет важную роль при разработке моделей данных по целому ряду причин:
- Импорт таблиц моделей: Обновление данных будет эффективно выполняться для таблиц моделей импорта (Power Pivot или Power BI Desktop), с точки зрения использования ресурсов и длительности обновления.
- Таблицы режима хранения DirectQuery и двойного хранилища: Каждая таблица режима хранения DirectQuery и двойного режима хранения (только Power BI) должна основываться на Power Query запроса, который можно сложить.
- Добавочное обновление: Добавочное обновление данных (только Power BI) будет эффективным с точки зрения использования ресурсов и длительности обновления. На самом деле окно конфигурации добавочного обновления Power BI уведомит вас о предупреждении, если оно определит, что невозможно выполнить свертывание запросов для таблицы. Если этого не удается достичь, цель добавочного обновления будет побеждена. Это связано с тем, что подсистеме гибридных веб-приложений в такой ситуации придется извлечь все строки источника и затем применить фильтры, чтобы определить добавочные изменения.
Свертывание запросов может выполняться как для всего запроса Power Query, так и для части его шагов. Если свертывание запросов невозможно ( частично или полностью) подсистема Power Query mashup должна компенсироваться путем обработки преобразований данных. Этот процесс может включать получение результатов исходного запроса, что для больших наборов данных является очень ресурсоемким и медленным.
Рекомендуется стремиться к повышению эффективности в проектах модели, обеспечивая свертывание запросов по возможности.
Источники, поддерживающие свертывание
Большинство источников данных, использующих язык запросов, поддерживает свертывание запросов. К таким источникам могут относиться реляционные базы данных, веб-каналы OData (включая списки SharePoint), Exchange и Active Directory. При этом такие источники данных, как неструктурированные файлы, BLOB-объекты и веб-ресурсы, обычно не поддерживают свертывание.
Преобразования, которые могут достичь свертывание
Свертывание запросов поддерживается для преобразований реляционных источников данных, которые могут быть записаны в виде одной инструкции SELECT. Инструкцию SELECT можно создать с соответствующими предложениями WHERE, GROUP BY и JOIN. Кроме того, она может содержать выражения столбцов (вычисления), которые используют стандартные встроенные функции, поддерживаемые базами данных SQL.
Как правило, в следующем списке описываются преобразования, которые могут быть свернуты.
Удаление столбцов.
Переименование столбцов (псевдонимы столбцов SELECT).
Фильтрация строк со статическими значениями или параметрами Power Query (предикаты предложения WHERE).
Группирование и обобщение (предложение GROUP BY).
Расширение столбцов записей (исходных столбцов внешнего ключа) для объединения двух исходных таблиц (предложение JOIN).
Нечеткое слияние свертывания запросов на основе одного источника (предложения JOIN).
Добавление свернутых запросов на основе одного источника (оператор UNION ALL).
Добавление пользовательских столбцов с простой логикой (выражения столбцов SELECT). Простая логика подразумевает несложные операции, возможно, включая использование функций M, которые имеют эквивалентные функции в источнике данных SQL, такие как математические или текстовые операции. Например, следующие выражения возвращают компонент года значения столбца OrderDate (для возврата числового значения).
Date.Year([OrderDate])
Сводка и отмена сводных данных (операторы PIVOT и UNPIVOT).
Преобразования, предотвращающие свертывание
Как правило, в следующем списке описываются преобразования, которые предотвращают свертывание запросов. Этот список не предназначен для исчерпывающего списка.
Объединение запросов на основе разных источников.
Добавление запросов (объединение) на основе разных источников.
Добавление пользовательских столбцов со сложной логикой. Сложная логика подразумевает использование функций M, для которых в источнике данных отсутствуют эквивалентные функции. Например, следующие выражения форматируют значение столбца OrderDate (для возврата текстового значения).
Date.ToText([OrderDate], "yyyy")
Добавление столбцов индекса.
Если запрос Power Query охватывает несколько источников данных, свертыванию запросов также может помешать несогласованность в настройках конфиденциальности на уровне источника данных. Дополнительные сведения см. в статье об уровнях конфиденциальности Power BI Desktop.
Определение возможности свертывания запроса
В окне Power Query संपादक можно определить, когда можно сложить запрос Power Query. В области "Параметры запроса " при щелчке правой кнопкой мыши последнего примененного шага, если включен параметр "Просмотреть собственный запрос " (не серый), весь запрос можно сложить.
Примечание
Параметр "Просмотреть собственный запрос " доступен только для определенных реляционных соединителей базы данных или SQL. Он не работает для соединителей на основе OData, например, несмотря на то, что на серверной части происходит свертывание. Функция диагностики запросов — это лучший способ узнать, какое свертывание произошло для соединителей, отличных от SQL (хотя шаги, которые свертывание не вызываются явным образом, вы увидите только созданный URL-адрес).
Чтобы просмотреть свернутый запрос, выберите параметр "Просмотреть собственный запрос ". Затем вы получите собственный запрос, который Power Query будет использоваться для исходных данных.
Если параметр " Просмотреть собственный запрос " не включен (серый), это свидетельствует о том, что не все шаги запроса могут быть сложены. Тем не менее, при этом по-прежнему может быть доступно свертывание части шагов. Работая назад с последнего шага, можно проверить каждый шаг, чтобы узнать, включен ли параметр "Просмотреть собственный запрос ". Если да, то вы узнали, где, последовательность шагов, свертывание запросов больше не может быть достигнуто.
Дальнейшие действия
Дополнительные сведения о свертывании запросов и сопутствующие материалы можно найти в следующих статьях.