Поделиться через


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

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

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

Замечание

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

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

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

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

Замечание

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

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

Снимок экрана: диалоговое окно параметров подключения для подключения к базе данных 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 только для значений, не равных двум.

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

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

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

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

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

Снимок экрана: план запроса для шага

Подсказка

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