Freigeben über


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.

Screenshot mit Hervorhebung der Option zum Erstellen eines Power Query SDK-Erweiterungsprojekts.

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.

Screenshot des neuen Erweiterungsprojekts namens TripPin, das mit dem Power Query SDK erstellt wurde.

Ö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 auf Uri.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.

Screenshot der Ausführung einer Buildaufgabe vor dem Testen des Konnektors.

Das Ergebnis dieses Vorgangs erstellt einen neuen Bin-Ordner, in dem der integrierte Konnektor als TripPin.mez gespeichert wird.

Screenshot des neuen Bin-Ordners, der erstellt wurde, wo sich die Konnektordatei mit der Erweiterung „mez“ und dem Namen „TripPin.mez“ befindet.

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:

  1. Wählen Sie die Option zum Festlegen von Anmeldeinformationen aus.
  2. Wählen Sie TripPin als Datenquelle aus.
  3. Wählen Sie die Datei TripPin.query.pq als Abfrage-/Testdatei aus.
  4. 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.

Screenshot des Ausgabedialogs, der die Details der neu erstellten Authentifizierung für die TripPin-Verbindung unter Verwendung der in der Datei .query.pq übergebenen URL anzeigt.

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.

Screenshot der verschiedenen Alternativen zur Auswertung der aktuellen Power Query-Datei.

Der Ausgabedialog zeigt eine Meldung über die Ergebnisse Ihrer Auswertung sowie ein neues Fenster mit dem Namen PQTest-Ergebnis an.

Screenshot des PQTest-Ergebnisfensters, in dem die Ergebnisse der ausgeführten Bewertung angezeigt werden.

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.

  1. Erstellen Sie ein [My Documents]\Power BI Desktop\benutzerdefinierte Connector-Verzeichnis.
  2. Kopieren Sie die Erweiterungsdatei (TripPin.mez) in dieses Verzeichnis.
  3. 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).
  4. Starten Sie Power BI Desktop neu.
  5. 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.

Dialogfeld „Daten abrufen“.

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.

Funktion aufrufen.

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.

Abbildung der Administratoranmeldeaufforderung, die auf „Anonym“ festgelegt ist, und die Einstellung der Ebene, die auf die kürzeste URL festgelegt ist.

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.

Nav-Tabelle.

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.

Mein Datensatz.

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.

Nächste Schritte

TripPin Teil 2 - Datenverbindung für einen REST-Dienst