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


Часть 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 нажмите кнопку "Создать проект расширения".

Снимок экрана, подчеркивающий возможность создания проекта расширения пакета SDK Для Power Query.

После нажатия этой кнопки вам будет предложено ввести имя нового проекта. Присвойте этому новому проекту TripPinимя.

Снимок экрана: новый проект расширения, созданный с именем TripPin с помощью пакета SDK Power Query.

Откройте файл 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.

Снимок экрана: новая папка bin, созданная, где находится файл соединителя с расширением mez и именем TripPin.mez.

<Файл project.query.pq> используется для тестирования расширения без необходимости развернуть его в папке bin Power BI Desktop. Использование средств, доступных в пакете SDK Для Power Query:

  1. Выберите параметр "Задать учетные данные".
  2. Выберите TripPin в качестве источника данных.
  3. Выберите файл TripPin.query.pq в качестве файла запроса или теста.
  4. Выберите анонимный тип проверки подлинности.

В диалоговом окне вывода появится сообщение, которое подтверждает, что вы установили учетные данные для источника данных и сведения о каждом созданном учетных данных.

Снимок экрана: диалоговое окно вывода, отображающее сведения о созданной проверке подлинности для подключения TripPin с использованием URL-адреса, переданного в PQ-файле .query.pq.

Примечание.

Вы всегда можете очистить учетные данные с помощью команды "Очистить ВСЕ учетные данные" или проверка доступные учетные данные с помощью команды "Список учетных данных" в средствах пакета SDK Для Power Query.

Теперь с учетными данными выберите файл TripPin.query.pq и выберите правой кнопкой мыши в документе, чтобы оценить текущий файл power query или использовать параметр оценки текущего файла из средств пакета SDK Power Query.

Снимок экрана: несколько альтернативных вариантов для оценки текущего файла Power Query.

В диалоговом окне вывода отображается сообщение о результатах оценки, а также новое окно с именем PQTest.

Снимок экрана: окно результатов 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.

  1. Создайте каталог [Мои документы]\Power BI Desktop\Custom Подключение ors.
  2. Скопируйте файл расширения (TripPin.mez) в этот каталог.
  3. Установите флажок (Не рекомендуется) Разрешить любому расширению загружаться без проверки или предупреждения в Power BI Desktop (в разделе "Параметры файла>" и "Параметры параметров>>безопасности>данных").
  4. Перезапустите Power BI Desktop.
  5. Нажмите кнопку "Получить данные", чтобы открыть диалоговое окно "Получить данные>".

Расширение можно найти, введя его имя в поле поиска.

Диалоговое окно получения данных.

Выберите имя функции и выберите Подключение. Появится сообщение стороннего производителя— нажмите кнопку "Продолжить ". Откроется диалоговое окно вызова функции. Введите корневой 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.

Следующие шаги

Часть 2 TripPin — Подключение or данных для службы REST