Часть 1 TripPin — соединитель данных для службы OData
В этом руководстве рассматривается создание нового расширения источника данных для Power Query. Это руководство предназначено для последовательного выполнения каждого урока— каждый урок, созданный на основе соединителя, созданного на предыдущих уроках, постепенно добавляя новые возможности в соединитель.
В этом уроке вы научитесь:
- Создание проекта Подключение data Подключение or с помощью пакета SDK Power Query
- Создание базовой функции для извлечения данных из источника
- Тестирование соединителя в пакете SDK Power Query
- Регистрация соединителя в Power BI Desktop
Создание базового соединителя OData
В этом разделе описано, как создать проект data Подключение or, предоставить некоторые основные сведения и протестировать его в пакете SDK Power Query.
Откройте Visual Studio Code. Рекомендуется создать новую рабочую область, а затем создать проект расширения. Чтобы создать проект расширения, откройте обозреватель и в разделе ПАКЕТА SDK Power Query нажмите кнопку "Создать проект расширения".
После нажатия этой кнопки вам будет предложено ввести имя нового проекта. Присвойте этому новому проекту TripPin
имя.
Откройте файл TripPin.pq и вставьте в следующее определение соединителя.
section TripPin;
[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);
TripPinImpl = (url as text) =>
let
source = OData.Feed(url)
in
source;
// Data Source Kind description
TripPin = [
Authentication = [
Anonymous = []
],
Label = "TripPin Part 1 - OData"
];
// Data Source UI publishing description
TripPin.Publish = [
Beta = true,
Category = "Other",
ButtonText = { "TripPin OData", "TripPin OData" }
];
Это определение соединителя содержит следующее:
- Запись определения источника данных для соединителя TripPin
- Объявление о том, что неявное (анонимное) является единственным типом проверки подлинности для этого источника.
- Функция (
TripPinImpl
) с реализацией, которая вызывает OData.Feed - Общая функция (
TripPin.Feed
), задающая тип параметраUri.Type
- Запись публикации источника данных, которая позволяет соединителю отображаться в диалоговом окне получения данных Power Query
Откройте файл TripPin.query.pq. Замените текущее содержимое вызовом экспортируемой функции.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Прежде чем протестировать соединитель, необходимо создать его. Для этого перейдите в терминал и выберите параметр "Выполнить задачу сборки"... (сочетание клавиш CTRL+ SHIFT+B). Рекомендуется выбрать параметр MakePQX , но любой из вариантов, доступных для сборки, должен работать.
Результат этой операции создает новую папку Bin , в которой созданный соединитель хранится как TripPin.mez.
<Файл project.query.pq> используется для тестирования расширения без необходимости развернуть его в папке bin Power BI Desktop. Использование средств, доступных в пакете SDK Для Power Query:
- Выберите параметр "Задать учетные данные".
- Выберите TripPin в качестве источника данных.
- Выберите файл TripPin.query.pq в качестве файла запроса или теста.
- Выберите анонимный тип проверки подлинности.
В диалоговом окне вывода появится сообщение, которое подтверждает, что вы установили учетные данные для источника данных и сведения о каждом созданном учетных данных.
Примечание.
Вы всегда можете очистить учетные данные с помощью команды "Очистить ВСЕ учетные данные" или проверка доступные учетные данные с помощью команды "Список учетных данных" в средствах пакета SDK Для Power Query.
Теперь с учетными данными выберите файл TripPin.query.pq и выберите правой кнопкой мыши в документе, чтобы оценить текущий файл power query или использовать параметр оценки текущего файла из средств пакета SDK Power Query.
В диалоговом окне вывода отображается сообщение о результатах оценки, а также новое окно с именем PQTest.
Окно результатов PQTest состоит из трех вкладок:
- Выходные данные: отображает предварительный просмотр данных в сетке.
- Сводка. Общие сведения об оценке, такие как StartTime, EndTime, Duration, файл, используемый для оценки, состояние и многое другое.
- DataSource: предоставляет сведения об источнике данных, используемом из типа, имени функции и пути.
Вы можете попробовать несколько различных URL-адресов OData в тестовом файле, чтобы узнать, как возвращаются различные результаты. Например:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
Файл TripPin.query.pq может содержать отдельные инструкции, инструкции let или полные документы раздела.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Внимание
Всегда сохраняйте файлы по мере работы. При внесении изменений в файл TripPin.pq всегда следует активировать следующую задачу сборки, чтобы убедиться, что вы тестируете последнюю версию соединителя.
Откройте Fiddler для записи HTTP-трафика и выполните запрос. Вы увидите несколько различных запросов на services.odata.org, созданных процессом контейнера mashup. Вы можете увидеть, что доступ к корневому URL-адресу службы приводит к состоянию 302 и перенаправлению на более длинную версию URL-адреса. Следующие перенаправления — это другое поведение, показано, как бесплатно использовать функции базовой библиотеки.
Обратите внимание, что при просмотре URL-адресов можно увидеть свертывание запросов, которое произошло с инструкцией SelectColumns
.
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
При добавлении дополнительных преобразований в запрос вы увидите, как они влияют на созданный URL-адрес.
Это поведение важно отметить. Хотя вы не реализовали явную логику свертывания, соединитель наследует эти возможности из функции OData.Feed . Операторы M — это возможности создания. Контексты фильтров будут передаваться из одной функции в другую, когда это возможно. Это похоже на то, как функции источника данных, используемые в соединителе, наследуют контекст проверки подлинности и учетные данные. В последующих уроках вы замените использование OData.Feed, которое имеет собственные возможности свертывания с помощью Web.Contents, что не делает. Чтобы получить тот же уровень возможностей, необходимо использовать Table.View
интерфейс и реализовать собственную явную логику свертывания.
Загрузка расширения в Power BI Desktop
Чтобы использовать расширение в Power BI Desktop, необходимо скопировать выходной файл проекта соединителя (TripPin.mez) в каталог пользовательских Подключение ors.
- Создайте каталог [Мои документы]\Power BI Desktop\Custom Подключение ors.
- Скопируйте файл расширения (TripPin.mez) в этот каталог.
- Установите флажок (Не рекомендуется) Разрешить любому расширению загружаться без проверки или предупреждения в Power BI Desktop (в разделе "Параметры файла>" и "Параметры параметров>>безопасности>данных").
- Перезапустите Power BI Desktop.
- Нажмите кнопку "Получить данные", чтобы открыть диалоговое окно "Получить данные>".
Расширение можно найти, введя его имя в поле поиска.
Выберите имя функции и выберите Подключение. Появится сообщение стороннего производителя— нажмите кнопку "Продолжить ". Откроется диалоговое окно вызова функции. Введите корневой URL-адрес службы (https://services.odata.org/v4/TripPinService/
) и нажмите кнопку "ОК".
Так как это первый раз, когда вы обращаетесь к этому источнику данных, вы получите запрос на учетные данные. Убедитесь, что выбран самый короткий URL-адрес, а затем выберите Подключение.
Обратите внимание, что вместо получения простой таблицы данных появится навигатор. Это связано с тем, что функция OData.Feed возвращает таблицу со специальными метаданными поверх нее, что интерфейс Power Query будет отображаться в виде таблицы навигации. В этом пошаговом руководстве описано, как создать и настроить собственную таблицу навигации в следующем занятии.
Выберите таблицу "Я" , а затем выберите " Преобразовать данные". Обратите внимание, что столбцы уже имеют назначенные типы (ну, большинство из них). Это еще одна функция базовой функции OData.Feed . Если вы просматриваете запросы в Fiddler, вы увидите, что вы получили $metadata документ службы. Реализация OData подсистемы выполняет это автоматически, чтобы определить схему, типы данных и связи службы.
Заключение
На этом занятии вы описываете создание простого соединителя на основе функции библиотеки OData.Feed . Как вы видели, для включения полнофункциональных соединителей по базовой OData
функции требуется небольшая логика. Другие функции с поддержкой расширяемости, такие как ODBC. DataSource предоставляет аналогичные возможности.
На следующем занятии вы замените использование OData.Feed менее способной функцией Web.Contents. Каждый урок реализует дополнительные функции соединителя, включая разбиение по страницам, обнаружение метаданных и схему и свертывание запросов в синтаксис запросов OData, пока настраиваемый соединитель не поддерживает тот же диапазон возможностей, что и OData.Feed.