Свертывание запросов на собственные запросы

В Power Query вы можете определить собственный запрос и запустить его в источнике данных. В статье "Импорт данных из базы данных с помощью собственного запроса базы данных" объясняется, как выполнить этот процесс с несколькими источниками данных. Но с помощью процесса, описанного в этой статье, ваш запрос не будет использовать какие-либо свертывания запросов из последующих шагов запроса.

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

Примечание.

Мы рекомендуем ознакомиться с документацией по свертке запросов и индикаторам свертывания запросов, чтобы лучше понять понятия, используемые в этой статье.

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

Метод, описанный в следующих разделах, применяется к следующим соединителям данных:

Подключение целевой объект из источника данных

Примечание.

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

При подключении к источнику данных важно подключиться к узлу или уровню, в котором требуется выполнить собственный запрос. Например, в этой статье этот узел будет уровнем базы данных на сервере.

диалоговое окно параметров Подключение ion для подключения к базе данных AdventureWorks2019 на локальном экземпляре SQL Server.

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

В этом списке необходимо выбрать объект, в котором выполняется собственный запрос (также известный как целевой объект). В этом примере этот объект является уровнем базы данных.

В окне навигатора в Power Query щелкните правой кнопкой мыши узел базы данных в окне навигатора и выберите параметр "Преобразовать данные ". При выборе этого параметра создается новый запрос общего представления базы данных, который является целевым объектом, который необходимо запустить собственный запрос.

Изображение, в котором пользователь щелкнул правой кнопкой мыши узел базы данных в навигаторе, с акцентом на пункт меню

После того как запрос приземляется в редакторе Power Query, на панели "Примененные шаги" должен отображаться только исходный шаг. Этот шаг содержит таблицу со всеми доступными объектами в базе данных, аналогично тому, как они отображались в окне навигатора.

Запрос только с исходным шагом.

Использование функции Value.NativeQuery

Целью этого процесса является выполнение следующего кода SQL и применение дополнительных преобразований с помощью Power Query, которые можно сложить обратно в источник.

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

Первым шагом было определить правильный целевой объект, который в данном случае — база данных, в которой будет выполняться код SQL. После того как шаг имеет правильный целевой объект, вы можете выбрать этот шаг (в данном случае — источник в примененных шагах), а затем нажмите кнопку fx в строке формул, чтобы добавить пользовательский шаг. В этом примере замените формулу следующей Source формулой:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

Наиболее важным компонентом этой формулы является использование необязательной записи для параметра параметров функции, которая имеет поле записи EnableFolding с значением true.

Новая настраиваемая формула шага с использованием функции Value.NativeQuery и явного SQL-запроса.

Примечание.

Дополнительные сведения о функции Value.NativeQuery см. в официальной документации.

После ввода формулы появится предупреждение, которое потребует включения собственных запросов для выполнения для конкретного шага. Вы можете щелкнуть "Продолжить" для оценки этого шага.

Эта инструкция SQL предоставляет таблицу только с тремя строками и двумя столбцами.

Собственный запрос, вычисляемый для целевой базы данных.

Свертывание запросов на тестирование

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

Фильтрация столбца DepartmentID, чтобы иметь только значения, не равные двум.

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

Шаг фильтра, показанный как сложенный обратно в источник данных в разделе примененных шагов.

Чтобы дополнительно проверить, какой запрос отправляется в источник данных, щелкните правой кнопкой мыши шаг "Отфильтрованные строки" и выберите параметр, который считывает план запроса view, чтобы проверка план запроса для этого шага.

В представлении плана запроса вы увидите, что узел с именем Value.NativeQuery в левой части экрана с текстом гиперссылки, который считывает сведения о представлении. Вы можете щелкнуть этот текст гиперссылки, чтобы просмотреть точный запрос, отправляемый в базу данных SQL Server.

Собственный запрос упаковывается вокруг другой инструкции SELECT, чтобы создать вложенный запрос исходного. Power Query сделает все возможное, чтобы создать наиболее оптимальный запрос, учитывая используемые преобразования и предоставленный собственный запрос.

План запроса для шага

Совет

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