TripPin Deel 1- Gegevensconnector voor een OData-service
In deze meerdelige zelfstudie wordt het maken van een nieuwe gegevensbronextensie voor Power Query. De zelfstudie is bedoeld om opeenvolgend te worden uitgevoerd voor elke les die is gebaseerd op de connector die in de vorige lessen is gemaakt, en incrementeel nieuwe mogelijkheden toe te voegen — aan uw connector.
In deze les gaat u het volgende doen:
- Een nieuw gegevensconnectorproject maken met de Visual Studio-SDK
- Een basisfunctie maken om gegevens op te halen uit een bron
- Uw connector testen in Visual Studio
- Uw connector registreren in Power BI Desktop
Een eenvoudige OData-connector maken
In deze sectie maakt u een nieuw gegevensconnectorproject, geeft u basisinformatie op en test u deze in Visual Studio.
Open Visual Studio en maak een nieuw Project. Selecteer onder Power Query map data connector het project Gegevensconnector. Stel voor dit voorbeeld de projectnaam in op TripPin .

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) die het parametertype in stelt opUri.Type - Een publicatierecord van de gegevensbron waarmee de connector kan worden weergegeven in Power BI dialoogvenster Gegevens op halen
Open het bestand TripPin.query.pq. Vervang de huidige inhoud door een aanroep van de geëxporteerde functie.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Selecteer de knop Start om het hulpprogramma M Query te starten.
Het bestand .query.pq wordt gebruikt om uw extensie te testen zonder dat u deze in de bin-map Power BI Desktop van uw <project> Power BI Desktop moet implementeren. Als u de knop Start selecteert (of op F5 drukt), wordt de extensie automatisch ge compileerd en wordt het hulpprogramma M Query start.
Het voor de eerste keer uitvoeren van uw query resulteert in een referentiefout. In Power Query zou de hostingtoepassing deze fout converteren naar een referentieprompt. In Visual Studio ziet u een vergelijkbare prompt waarin wordt aanroept welke gegevensbron referenties en het pad naar de gegevensbron ontbreken. Selecteer de kortste van de gegevensbronpaden ( ), hiermee wordt uw referentie toegepast https://services.odata.org/ — op alle URL's onder dit pad.
Selecteer het type Anonieme referentie en selecteer vervolgens Referentie instellen.

Selecteer OK om het dialoogvenster te sluiten en selecteer vervolgens opnieuw de knop Start. U ziet een dialoogvenster met de uitvoeringsstatus van de query en ten slotte een tabel Queryresultaat met de gegevens die zijn geretourneerd door uw query.

U kunt een aantal verschillende OData-URL's in het testbestand uitproberen om te zien hoe verschillende resultaten worden geretourneerd. Bijvoorbeeld:
https://services.odata.org/v4/TripPinService/Mehttps://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
Open Fiddler om HTTP-verkeer vast te leggen en voer de query uit. Als het goed is, ziet u een aantal verschillende 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. De volgende omleidingen zijn een ander gedrag dat u 'gratis' krijgt van de basisbibliotheekfuncties.
Als u naar de URL's kijkt, is het belangrijk om te weten dat u de query folding kunt zien die is uitgevoerd met de SelectColumns instructie .
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 de connector deze mogelijkheden over van de functie OData.Feed. M-instructies zijn filtercontexten die samen kunnen worden gebruikt, waar mogelijk van de ene functie naar — de andere. Dit is in concept 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 mogelijkheden voor native vouwen heeft, door Web.Contents,wat dat niet doet. Om hetzelfde niveau van mogelijkheden te krijgen, moet u de interface gebruiken en uw eigen Table.View 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 Aangepaste connectors.
- Selecteer Visual Studio in | Bouw Oplossing (F6) in de menubalk. Hiermee wordt het MEZ-bestand voor uw project gegenereerd. Standaard wordt dit in de map bin\Debug van uw project geplaatst.
- Maak een
[My Documents]\Power BI Desktop\Custom Connectorsmap. - Kopieer het extensiebestand naar deze map.
- Controleer de optie (Niet aanbevolen) Toestaan dat een extensie wordt geladen zonder validatie of waarschuwing in Power BI Desktop (onder Bestandsopties en instellingen > > Opties > Beveiligingsgegevensextensies). >
- Start Power BI Desktop opnieuw.
- Selecteer Gegevens > meer om het dialoogvenster Gegevens op te halen.
U kunt uw extensie vinden door de naam ervan in het zoekvak te typen.

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

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

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

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

Conclusie
In deze les hebt u gezien hoe u een eenvoudige connector maakt 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 stellen. Andere functies die zijn ingeschakeld voor extensibility, zoals ODBC. DataSourcebiedt vergelijkbare mogelijkheden.
In de volgende les vervangt u het gebruik van OData.Feed door een minder geschikte functie — Web.Contents. In elke les worden meer connectorfuncties geïmplementeerd, zoals paginering, detectie van metagegevens/schema's en het vouwen van query's naar de OData-querysyntaxis, totdat uw aangepaste connector dezelfde reeks mogelijkheden ondersteunt als OData.Feed.