TripPin Teil 1 - Datenconnector für einen OData-Dienst
Dieser mehrteilige Lehrgang behandelt die Erstellung einer neuen Datenquellenerweiterung für Power Query. Der Lehrgang sollte nacheinander durchgeführt werden - jede Lektion baut auf dem in den vorangegangenen Lektionen erstellten Connector auf und fügt dem Connector schrittweise neue Funktionen hinzu.
In dieser Lektion lernen Sie Folgendes:
- Erstellen Sie ein neues Datenkonnektor-Projekt mit dem Power Query SDK
- Erstellen einer Basisfunktion zum Abrufen von Daten aus einer Quelle
- Testen des Konnektors im Power Query SDK
- Registrieren Sie Ihren Connector in Power BI Desktop
Erstellen eines einfachen OData-Connectors
In diesem Abschnitt werden Sie ein neues Data Connector-Projekt erstellen, einige grundlegende Informationen bereitstellen und es in Power Query SDK testen.
Öffnen Sie Visual Studio Code. Wir empfehlen Ihnen, einen neuen Arbeitsbereich zu erstellen und dann ein neues Erweiterungsprojekt anzulegen. Um das neue Erweiterungsprojekt zu erstellen, öffnen Sie den Explorer, und wählen Sie im Abschnitt Power Query SDK die Schaltfläche Ein Erweiterungsprojekt erstellen aus.
Nachdem Sie diese Schaltfläche ausgewählt haben, werden Sie aufgefordert, den Namen des neuen Projekts einzugeben. Geben Sie diesem neuen Projekt den Namen TripPin
.
Öffnen Sie die Datei TripPin.pq und fügen Sie die folgende Connectordefinition ein.
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" }
];
Diese Connectordefinition enthält:
- Ein Datenquellen-Definitionssatz für den TripPin-Connector
- Eine Erklärung, dass Implizit (Anonym) die einzige Authentifizierungsart für diese Quelle ist
- Eine Funktion (
TripPinImpl
) mit einer Implementierung, die OData.Feed aufruft - Eine gemeinsame Funktion (
TripPin.Feed
), die den Parametertyp aufUri.Type
- Ein Veröffentlichungsdatensatz für die Datenquelle, der es ermöglicht, dass der Konnektor im Dialogfeld Power Query Daten abrufen angezeigt wird
Öffnen Sie die Datei TripPin.query.pq. Ersetzen Sie den aktuellen Inhalt durch einen Aufruf Ihrer exportierten Funktion.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Bevor Sie den Konnektor testen können, müssen Sie ihn erstellen. Wechseln Sie dazu zum Terminal und wählen Sie die Option Build-Aufgabe ausführen aus (Tastenkombination STRG+UMSCHALT+B). Es wird empfohlen, die Option MakePQX auszuwählen, aber beide Optionen, die zum Erstellen verfügbar sind, sollten funktionieren.
Das Ergebnis dieses Vorgangs erstellt einen neuen Bin-Ordner, in dem der integrierte Konnektor als TripPin.mez gespeichert wird.
Die <Projekt>.query.pq Datei wird verwendet, um Ihre Erweiterung zu testen, ohne sie im Bin-Ordner Ihres Power BI Desktop bereitstellen zu müssen. Verwenden der im Power Query SDK verfügbaren Tools:
- Wählen Sie die Option zum Festlegen von Anmeldeinformationen aus.
- Wählen Sie TripPin als Datenquelle aus.
- Wählen Sie die Datei TripPin.query.pq als Abfrage-/Testdatei aus.
- Wählen Sie als Authentifizierungsart Anonym aus.
Im Ausgabedialog wird eine Meldung angezeigt, die bestätigt, dass Sie eine Berechtigung für die Datenquelle und die Details für jede erstellte Berechtigung festgelegt haben.
Hinweis
Sie können die Anmeldeinformationen immer mithilfe des Befehls ALLE Anmeldeinformationen löschen löschen oder die verfügbaren Anmeldeinformationen mithilfe des Befehls Anmeldeinformationen auflisten in den Power Query SDK Tools überprüfen.
Wenn die Anmeldeinformationen vorhanden sind, wählen Sie die Datei TripPin.query.pq aus und wählen entweder mit der rechten Maustaste im Dokument die Option Aktuelle Power Query-Datei auswerten oder verwenden die Option Aktuelle Datei auswerten aus den Power Query SDK-Tools.
Der Ausgabedialog zeigt eine Meldung über die Ergebnisse Ihrer Auswertung sowie ein neues Fenster mit dem Namen PQTest-Ergebnis an.
Das PQTest-Ergebnisfenster besteht aus drei Registerkarten:
- Ausgabe: Zeigt eine Vorschau Ihrer Daten in einem Raster an.
- Zusammenfassung: Allgemeine Bewertungsdetails wie Startzeit, Endzeit, Dauer, die Datei, die für die Bewertung verwendet wurde, der Status und mehr.
- DataSource: Liefert Informationen über die Datenquelle, die von der Art verwendet wurde, den Funktionsnamen und den Pfad.
Sie können einige verschiedene OData-URLs in der Testdatei ausprobieren, um zu sehen, wie unterschiedlich die Ergebnisse ausfallen. Zum Beispiel:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
Die Datei TripPin.query.pq kann einzelne Anweisungen, Let-Anweisungen oder vollständige Abschnittsdokumente enthalten.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Wichtig
Stellen Sie sicher, dass Sie Ihre Dateien immer speichern, während Sie arbeiten. Wenn Sie Änderungen an Ihrer TripPin.pq-Datei vornehmen, sollten Sie immer einen nachfolgenden Build-Task auslösen, um sicherzustellen, dass Sie mit der aktuellen Version Ihres Konnektors testen.
Öffnen Sie Fiddler, um den HTTP-Verkehr zu erfassen, und führen Sie die Abfrage aus. Sie müssen einige verschiedene Anfragen an services.odata.org sehen, die vom Mashup-Container-Prozess erzeugt werden. Sie können sehen, dass der Zugriff auf die Stamm-URL des Dienstes zu einem 302-Status und einer Umleitung zur längeren Version der URL führt. Das Verfolgen von Umleitungen ist ein weiteres Verhalten, das Sie „kostenlos“ von den Funktionen der Basisbibliothek erhalten.
Wenn Sie sich die URLs ansehen, können Sie die Faltung der Abfrage sehen, die mit der Anweisung SelectColumns
erfolgt ist.
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
Wenn Sie weitere Transformationen zu Ihrer Abfrage hinzufügen, können Sie sehen, wie sie sich auf die generierte URL auswirken.
Dieses Verhalten ist wichtig zu beachten. Auch wenn Sie keine explizite Faltlogik implementiert haben, erbt Ihr Konnektor diese Fähigkeiten von der Funktion OData.Feed. M-Anweisungen sind zusammensetzbar - Filterkontexte fließen von einer Funktion zur anderen, wann immer dies möglich ist. Dieses Konzept ähnelt der Art und Weise, wie Datenquellenfunktionen, die innerhalb Ihres Connectors verwendet werden, ihren Authentifizierungskontext und ihre Anmeldedaten erben. In späteren Lektionen werden Sie die Verwendung von OData.Feed, das über native Folding-Funktionen verfügt, durch Web.Contents ersetzen, das dies nicht tut. Um den gleichen Funktionsumfang zu erhalten, müssen Sie die Schnittstelle Table.View
verwenden und Ihre eigene explizite Faltungslogik implementieren.
Laden Ihrer Erweiterung in Power BI Desktop
Um Ihre Erweiterung in Power BI Desktop zu verwenden, müssen Sie die Ausgabedatei Ihres Connectorprojekts (TripPin.mez) in Ihr Verzeichnis Custom Connectors kopieren.
- Erstellen Sie ein [My Documents]\Power BI Desktop\benutzerdefinierte Connector-Verzeichnis.
- Kopieren Sie die Erweiterungsdatei (TripPin.mez) in dieses Verzeichnis.
- Aktivieren Sie die Option (Nicht empfohlen) Zulassen, dass jede Erweiterung ohne Validierung oder Warnung geladen wird in Power BI Desktop (unter Datei>Optionen und Einstellungen>Optionen>Sicherheit>Datenerweiterungen).
- Starten Sie Power BI Desktop neu.
- Wählen Sie Daten abrufen > Mehr, um das Dialogfeld Daten abrufen aufzurufen.
Sie können Ihre Erweiterung finden, indem Sie ihren Namen in das Suchfeld eingeben.
Markieren Sie den Funktionsnamen und wählen Sie Connect. Es erscheint eine Meldung eines Drittanbieters - wählen Sie Continue, um fortzufahren. Der Dialog für den Funktionsaufruf wird nun angezeigt. Geben Sie die Stamm-URL des Dienstes ein (https://services.odata.org/v4/TripPinService/
), und wählen Sie OK.
Da Sie zum ersten Mal auf diese Datenquelle zugreifen, erhalten Sie eine Aufforderung zur Eingabe Ihrer Anmeldedaten. Vergewissern Sie sich, dass die kürzeste URL ausgewählt ist, und wählen Sie dann Connect.
Beachten Sie, dass anstelle einer einfachen Datentabelle der Navigator erscheint. Das liegt daran, dass die Funktion OData.Feed eine Tabelle mit speziellen Metadaten zurückgibt, die Power Query als Navigationstabelle anzeigen kann. Wie Sie Ihre eigene Navigationstabelle erstellen und anpassen können, wird in einer späteren Lektion behandelt.
Wählen Sie die Tabelle Me und dann Transform Data. Beachten Sie, dass den Spalten bereits Typen zugewiesen sind (zumindest den meisten). Dies ist ein weiteres Merkmal der zugrunde liegenden Funktion OData.Feed. Wenn Sie die Anfragen in Fiddler beobachten, werden Sie sehen, dass Sie das $metadata-Dokument des Dienstes abgerufen haben. Die OData-Implementierung der Engine tut dies automatisch, um das Schema, die Datentypen und die Beziehungen des Dienstes zu bestimmen.
Zusammenfassung
Diese Lektion führte Sie durch die Erstellung eines einfachen Connectors, der auf der Funktion der Bibliothek OData.Feed basiert. Wie Sie gesehen haben, ist nur wenig Logik erforderlich, um einen voll funktionsfähigen Connector über die Basisfunktion OData
zu ermöglichen. Andere erweiterungsfähige Funktionen, wie ODBC.DataSource, bieten ähnliche Möglichkeiten.
In der nächsten Lektion werden Sie die Verwendung von OData.Feed durch eine weniger leistungsfähige Funktion -Web.Contents ersetzen. In jeder Lektion werden weitere Connector-Funktionen implementiert, einschließlich Paging, Metadaten-/Schema-Erkennung und Query Folding auf die OData-Abfragesyntax, bis Ihr benutzerdefinierter Connector die gleiche Bandbreite an Funktionen unterstützt wie OData.Feed.