Delen via


TripPin deel 1 - Gegevensconnector voor een OData-service

Deze meerdelige zelfstudie bevat informatie over het maken van een nieuwe gegevensbronextensie voor Power Query. De zelfstudie is bedoeld om opeenvolgend te worden uitgevoerd. Elke les bouwt voort op de connector die in de vorige lessen is gemaakt, en voegt incrementeel nieuwe mogelijkheden toe aan uw connector.

In deze les gaat u het volgende doen:

  • Een nieuw Data Verbinding maken or-project maken met behulp van de Power Query SDK
  • Een basisfunctie maken om gegevens op te halen uit een bron
  • Uw connector testen in de Power Query SDK
  • Uw connector registreren in Power BI Desktop

Een eenvoudige OData-connector maken

In deze sectie maakt u een nieuw Data Verbinding maken or-project, geeft u enkele basisinformatie op en test u het in de Power Query SDK.

Open Visual Studio Code. U wordt aangeraden een nieuwe werkruimte te maken en vervolgens een nieuw extensieproject te maken. Als u het nieuwe extensieproject wilt maken, opent u de verkenner en selecteert u in de sectie Power Query SDK de knop Een extensieproject maken.

Schermopname waarin de optie voor het maken van een Power Query SDK-extensieproject wordt benadrukt.

Nadat u deze knop hebt geselecteerd, wordt u gevraagd de naam van het nieuwe project in te voeren. Geef dit nieuwe project TripPineen naam.

Schermopname van het nieuwe extensieproject dat TripPin is gemaakt met behulp van de Power Query SDK.

Open het bestand TripPin.pq en plak de volgende connectordefinitie.

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" }
];

Deze connectordefinitie bevat:

  • Een gegevensbrondefinitierecord voor de TripPin-connector
  • Een declaratie dat impliciet (anoniem) het enige verificatietype voor deze bron is
  • Een functie (TripPinImpl) met een implementatie die OData.Feed aanroept
  • Een gedeelde functie (TripPin.Feed) waarmee het parametertype wordt ingesteld op Uri.Type
  • Een gegevensbronpublicatierecord waarmee de connector kan worden weergegeven in het dialoogvenster Gegevens ophalen van Power Query

Open het bestand TripPin.query.pq. Vervang de huidige inhoud door een aanroep naar uw geëxporteerde functie.

TripPin.Feed("https://services.odata.org/v4/TripPinService/")

Voordat u de connector kunt testen, moet u deze bouwen. Hiervoor gaat u naar de terminal en selecteert u de optie Buildtaak uitvoeren... (sneltoets Ctrl + Shift + B). We raden u aan om de optie MakePQX te kiezen, maar beide opties die beschikbaar zijn om te bouwen, moeten werken.

Schermopname van het uitvoeren van een build-taak voordat u de connector test.

Het resultaat van deze bewerking maakt een nieuwe bin-map waarin uw ingebouwde connector wordt opgeslagen als TripPin.mez.

Schermopname van de nieuwe bin-map die is gemaakt waar het connectorbestand met een mez-extensie en een naam TripPin.mez zich bevindt.

Het <bestand project.query.pq> wordt gebruikt om uw extensie te testen zonder deze te hoeven implementeren in de bin-map van Power BI Desktop. De hulpprogramma's gebruiken die beschikbaar zijn in de Power Query SDK:

  1. Selecteer de optie om referenties in te stellen.
  2. Selecteer TripPin als gegevensbron.
  3. Selecteer het bestand TripPin.query.pq als het query-/testbestand.
  4. Selecteer anoniem als verificatietype.

In het uitvoerdialoogvenster wordt een bericht weergegeven waarin wordt bevestigd dat u een referentie hebt ingesteld voor de gegevensbron en de details voor elke gemaakte referentie.

Schermopname van het uitvoerdialoogvenster met de details van de zojuist gemaakte verificatie voor de TripPin-connectur met behulp van de URL die is doorgegeven in het .query.pq-bestand.

Notitie

U kunt de referenties altijd wissen met de opdracht ALL-referenties wissen of de beschikbare referenties controleren met behulp van de opdracht Referenties weergeven in de Power Query SDK-hulpprogramma's.

Nu de referentie is ingesteld, selecteert u het bestand TripPin.query.pq en selecteert u rechts in het document om het huidige Power Query-bestand te evalueren of gebruikt u de optie om het huidige bestand te evalueren vanuit de Power Query SDK-hulpprogramma's.

Schermopname van de meerdere alternatieven om het huidige Power Query-bestand te evalueren.

In het uitvoerdialoogvenster wordt een bericht weergegeven van de resultaten van uw evaluatie en een nieuw venster met de naam PQTest-resultaat.

Schermopname van het venster met het PQTest-resultaat met de resultaten van de evaluatie die is uitgevoerd.

Het resultaatvenster PQTest bestaat uit drie tabbladen:

  • Uitvoer: Geeft een voorbeeld weer van uw gegevens in een raster.
  • Samenvatting: Algemene evaluatiedetails zoals StartTime, EndTime, Duration, het bestand dat is gebruikt voor de evaluatie, de status en meer.
  • DataSource: Bevat informatie over de gegevensbron die is gebruikt op basis van het type, de functienaam en het pad.

U kunt een aantal verschillende OData-URL's in het testbestand uitproberen om te zien hoe verschillende resultaten worden geretourneerd. Voorbeeld:

  • https://services.odata.org/v4/TripPinService/Me
  • https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
  • https://services.odata.org/v4/TripPinService/People

Het Bestand TripPin.query.pq kan enkele instructies, let-instructies of volledige sectiedocumenten bevatten.

let
    Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
    People = Source{[Name="People"]}[Data],
    SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
    SelectColumns

Belangrijk

Zorg ervoor dat u uw bestanden altijd opslaat terwijl u werkt. Als u wijzigingen aanbrengt in uw TripPin.pq-bestand, moet u altijd een volgende build-taak activeren om ervoor te zorgen dat u test op basis van de nieuwste versie van uw connector.

Open Fiddler om HTTP-verkeer vast te leggen en voer de query uit. U ziet een aantal verschillende aanvragen voor services.odata.org, gegenereerd door het mashup-containerproces. U kunt zien dat het openen van de hoofd-URL van de service resulteert in een 302-status en een omleiding naar de langere versie van de URL. Het volgen van omleidingen is een ander gedrag dat u gratis krijgt van de basisbibliotheekfuncties.

Een ding om op te merken als u de URL's bekijkt, is dat u de query folding kunt zien die met de SelectColumns instructie is gebeurd. https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName

Als u meer transformaties aan uw query toevoegt, kunt u zien hoe deze van invloed zijn op de gegenereerde URL.

Dit gedrag is belangrijk om op te merken. Hoewel u geen expliciete vouwlogica hebt geïmplementeerd, neemt uw connector deze mogelijkheden over van de functie OData.Feed . M-instructies zijn samengesteld. Filtercontexten stromen waar mogelijk van de ene functie naar de andere. Dit is vergelijkbaar met de manier waarop gegevensbronfuncties die in uw connector worden gebruikt, hun verificatiecontext en referenties overnemen. In latere lessen vervangt u het gebruik van OData.Feed, dat systeemeigen vouwmogelijkheden heeft, door Web.Contents, dat niet. Als u hetzelfde functionaliteitsniveau wilt hebben, moet u de Table.View interface gebruiken en uw eigen expliciete vouwlogica implementeren.

Uw extensie laden in Power BI Desktop

Als u de extensie in Power BI Desktop wilt gebruiken, moet u het uitvoerbestand van uw connectorproject (TripPin.mez) kopiëren naar de map Custom Verbinding maken ors.

  1. Maak een map [Mijn documenten]\Power BI Desktop\Custom Verbinding maken ors.
  2. Kopieer het extensiebestand (TripPin.mez) naar deze map.
  3. Schakel de optie (Niet aanbevolen) Toestaan dat een extensie wordt geladen zonder validatie of waarschuwing in Power BI Desktop (onder Bestandsopties>en instellingen>opties>voor beveiligingsgegevensextensies).>
  4. Start Power BI Desktop opnieuw.
  5. Selecteer Meer gegevens > ophalen om het dialoogvenster Gegevens ophalen weer te geven.

U kunt de extensie zoeken door de naam ervan in het zoekvak te typen.

Dialoogvenster Gegevens ophalen.

Selecteer de functienaam en selecteer Verbinding maken. Er wordt een bericht van derden weergegeven. Selecteer Doorgaan om door te gaan. Het dialoogvenster voor het aanroepen van de functie wordt nu weergegeven. Voer de hoofd-URL van de service (https://services.odata.org/v4/TripPinService/) in en selecteer OK.

Functie aanroepen.

Aangezien dit de eerste keer is dat u deze gegevensbron opent, ontvangt u een prompt voor referenties. Controleer of de kortste URL is geselecteerd en selecteer vervolgens Verbinding maken.

Afbeelding van referentieprompt ingesteld op Anoniem en de instelling op niveau ingesteld op de kortste URL.

U ziet dat in plaats van een eenvoudige tabel met gegevens te krijgen, de navigator wordt weergegeven. Dit komt doordat de OData.Feed-functie een tabel retourneert met speciale metagegevens erboven die door de Power Query-ervaring als navigatietabel moeten worden weergegeven. In dit scenario wordt uitgelegd hoe u in een toekomstige les uw eigen navigatietabel kunt maken en aanpassen.

Navigatietabel.

Selecteer de tabel Mij en selecteer vervolgens Gegevens transformeren. U ziet dat aan de kolommen al typen zijn toegewezen (de meeste kolommen). Dit is een andere functie van de onderliggende OData.Feed-functie . Als u de aanvragen in Fiddler bekijkt, ziet u dat u het $metadata document van de service hebt opgehaald. De OData-implementatie van de engine doet dit automatisch om het schema, de gegevenstypen en relaties van de service te bepalen.

Ik neem op.

Conclusie

In deze les hebt u stapsgewijs begeleid bij het maken van een eenvoudige connector op basis van de bibliotheekfunctie OData.Feed . Zoals u hebt gezien, is er weinig logica nodig om een volledig functionele connector via de OData basisfunctie in te schakelen. Andere uitbreidbaarheidsfuncties, zoals ODBC. DataSource biedt vergelijkbare mogelijkheden.

In de volgende les vervangt u het gebruik van OData.Feed door een minder geschikte functie: Web.Contents. Elke les implementeert meer connectorfuncties, waaronder paging, metagegevens/schemadetectie en het vouwen van query's naar de OData-querysyntaxis, totdat uw aangepaste connector dezelfde mogelijkheden ondersteunt als OData.Feed.

Volgende stappen

TripPin deel 2 - Data Verbinding maken or voor een REST-service