Свертывание запросов на собственные запросы
В Power Query можно определить собственный запрос и запустить его в источнике данных. В статье "Импорт данных из базы данных с помощью собственного запроса базы данных" объясняется, как выполнить этот процесс с несколькими источниками данных. Но с помощью процесса, описанного в этой статье, ваш запрос не использует преимущества свертывания запросов из последующих шагов запроса.
В этой статье демонстрируется альтернативный метод создания собственных запросов к источнику данных с помощью функции Value.NativeQuery и обеспечения активности механизма свертывания запросов для последующих шагов запроса.
Примечание.
Мы рекомендуем ознакомиться с документацией по свертке запросов и индикаторам свертывания запросов, чтобы лучше понять понятия, используемые в этой статье.
Поддерживаемые соединители данных
Метод, описанный в следующих разделах, применяется к следующим соединителям данных:
- Amazon Redshift
- Dataverse (при использовании расширенных вычислений)
- Google BigQuery
- PostgreSQL
- SAP HANA
- Snowflake
- SQL Server
Подключение к целевому объекту из источника данных
Примечание.
Для демонстрации этого процесса в этой статье используется соединитель SQL Server и пример базы данных AdventureWorks2019. Интерфейс может отличаться от соединителя к соединителю, но в этой статье описываются основы включения возможностей свертывания запросов через собственные запросы для поддерживаемых соединителей.
При подключении к источнику данных важно подключиться к узлу или уровню, в котором требуется выполнить собственный запрос. Например, в этой статье этот узел является уровнем базы данных внутри сервера.
После определения параметров подключения и предоставления учетных данных для подключения откроется диалоговое окно навигации для источника данных. Диалоговое окно навигации содержит все доступные объекты, к которым можно подключиться.
В этом списке необходимо выбрать объект, в котором выполняется собственный запрос (также известный как целевой объект). В этом примере этот объект является уровнем базы данных.
В окне навигатора в 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 предоставляет таблицу только с тремя строками и двумя столбцами.
Свертывание запросов на тестирование
Чтобы проверить свертывание запроса, можно попытаться применить фильтр к любому из столбцов и проверить, отображается ли индикатор свертывания запросов в разделе примененных шагов шаг как сложенный. В этом случае можно отфильтровать столбец DepartmentID, чтобы иметь значения, которые не равны двум.
После добавления этого фильтра можно проверить, что индикаторы свертывания запросов по-прежнему отображают свертывание запросов на этом новом шаге.
Чтобы дополнительно проверить, какой запрос отправляется в источник данных, можно выбрать и сохранить (или щелкнуть правой кнопкой мыши) шаг "Отфильтрованные строки" и выбрать параметр "Просмотр плана запроса", чтобы проверить план запроса для этого шага.
В представлении плана запроса вы увидите, что узел с именем Value.NativeQuery с гиперссылкой "Сведения о представлении". Вы можете выбрать эту гиперссылку, чтобы просмотреть точный запрос, отправляемый в базу данных SQL Server.
Собственный запрос упаковывается вокруг другой инструкции SELECT, чтобы создать вложенный запрос исходного. Power Query делает все возможное, чтобы создать наиболее оптимальный запрос, учитывая используемые преобразования и предоставленный собственный запрос.
Совет
В сценариях, когда возникают ошибки, так как свертывание запросов не удалось, рекомендуется проверить действия в качестве подзадачи исходного собственного запроса, чтобы проверить, могут ли быть какие-либо конфликты синтаксиса или контекста.