TripPin del 1 – Dataconnector til en OData-tjeneste
Dette selvstudium i flere dele dækker oprettelsen af en ny datakildeudvidelse til Power Query. Selvstudiet er beregnet til at blive udført sekventielt – hver lektion bygger på den connector, der blev oprettet i tidligere lektioner, og føjer trinvist nye funktioner til din connector.
I denne lektion skal du:
- Opret et nyt Data Forbind or-projekt ved hjælp af Power Query SDK
- Opret en basisfunktion for at hente data fra en kilde
- Test din connector i Power Query SDK
- Registrer din connector i Power BI Desktop
Oprettelse af en grundlæggende OData-connector
I dette afsnit skal du oprette et nyt Data Forbind or-projekt, angive nogle grundlæggende oplysninger og teste dem i Power Query SDK.
Åbn Visual Studio Code. Vi anbefaler, at du opretter et nyt arbejdsområde og derefter opretter et nyt udvidelsesprojekt. Hvis du vil oprette det nye udvidelsesprojekt, skal du åbne stifinderen og vælge knappen Opret et udvidelsesprojekt i afsnittet Power Query SDK.
Når du har valgt denne knap, bliver du bedt om at angive navnet på det nye projekt. Navngiv dette nye projekt TripPin
.
Åbn filen TripPin.pq, og indsæt følgende connectordefinition.
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" }
];
Denne connectordefinition indeholder:
- En datakildedefinitionspost for TripPin-connectoren
- En erklæring om, at Implicit (Anonym) er den eneste godkendelsestype for denne kilde
- En funktion (
TripPinImpl
) med en implementering, der kalder OData.Feed - En delt funktion (
TripPin.Feed
), der angiver parametertypen tilUri.Type
- En datakildeudgivelsespost, der gør det muligt for connectoren at blive vist i dialogboksen Hent data i Power-forespørgsel
Åbn filen TripPin.query.pq. Erstat det aktuelle indhold med et kald til den eksporterede funktion.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Før du kan teste din connector, skal du oprette den. Det gør du ved at gå til Terminal og vælge indstillingen Kør byg opgave... (Tastaturgenvej Ctrl + Skift + B). Vi anbefaler, at du vælger indstillingen MakePQX , men begge muligheder, der er tilgængelige for oprettelse, bør fungere.
Resultatet af denne handling opretter en ny bin-mappe , hvor den byggede connector er gemt som TripPin.mez.
<Filen project.query.pq> bruges til at teste din udvidelse uden at skulle installere den i mappen Med Power BI Desktop. Brug af de værktøjer, der er tilgængelige i Power Query SDK:
- Vælg indstillingen angiv legitimationsoplysninger.
- Vælg TripPin som datakilde.
- Vælg filen TripPin.query.pq som forespørgsels-/testfil.
- Vælg anonym som godkendelsestype.
I outputdialogboksen vises en meddelelse, der bekræfter, at du har angivet legitimationsoplysninger for datakilden og detaljerne for hver enkelt oprettede legitimationsoplysninger.
Bemærk
Du kan altid rydde legitimationsoplysningerne ved hjælp af kommandoen Ryd ALLE legitimationsoplysninger eller kontrollere de tilgængelige legitimationsoplysninger ved hjælp af kommandoen Listelegitimationsoplysninger i Power Query SDK-værktøjerne.
Når legitimationsoplysningerne nu er på plads, skal du vælge filen TripPin.query.pq og enten højre vælge i dokumentet for at evaluere den aktuelle power-forespørgselsfil , eller du kan bruge indstillingen til at evaluere den aktuelle fil fra Power Query SDK-værktøjerne.
I outputdialogboksen vises en meddelelse om resultaterne fra din evaluering samt et nyt vindue med navnet PQTest-resultat.
Resultatvinduet PQTest består af tre faner:
- Output: Viser et eksempel på dine data i et gitter.
- Oversigt: Generelle evalueringsoplysninger, f.eks. StartTime, EndTime, Varighed, den fil, der blev brugt til evalueringen, status og meget mere.
- DataSource: Indeholder oplysninger om den datakilde, der blev brugt fra typen , funktionsnavnet og stien.
Du kan prøve et par forskellige OData-URL-adresser i testfilen for at se, hvordan forskellige resultater returneres. Eksempler:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
Filen TripPin.query.pq kan indeholde enkelte sætninger, let-sætninger eller hele afsnitsdokumenter.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Vigtigt
Sørg for altid at gemme dine filer, mens du arbejder. Hvis du foretager ændringer i din TripPin.pq-fil, skal du altid udløse en efterfølgende buildopgave for at sikre, at du tester i forhold til den nyeste version af din connector.
Åbn Fiddler for at hente HTTP-trafik, og kør forespørgslen. Du bør se et par forskellige anmodninger om at services.odata.org, der er genereret af mikscontainerprocessen. Du kan se, at adgang til rod-URL-adressen for tjenesten resulterer i en 302-status og en omdirigering til den længere version af URL-adressen. Efter omdirigeringer er en anden funktionsmåde, du får "gratis" fra basisbiblioteksfunktionerne.
En ting at bemærke, hvis du ser på URL-adresserne, er, at du kan se den forespørgselsdelegering, der skete med sætningen SelectColumns
.
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
Hvis du føjer flere transformationer til din forespørgsel, kan du se, hvordan de påvirker den genererede URL-adresse.
Denne funktionsmåde er vigtig at bemærke. Selvom du ikke implementerede eksplicit foldelogik, arver din connector disse funktioner fra funktionen OData.Feed . M-sætninger kan skrives – filterkontekster overføres fra én funktion til en anden, når det er muligt. Dette svarer til den måde, datakildefunktioner, der bruges i din connector, arver deres godkendelseskontekst og legitimationsoplysninger. I senere lektioner skal du erstatte brugen af OData.Feed, som har oprindelige foldningsegenskaber, med Web.Contents, hvilket ikke er. Hvis du vil have det samme niveau af funktioner, skal du bruge grænsefladen Table.View
og implementere din egen eksplicitte foldelogik.
Indlæser din udvidelse i Power BI Desktop
Hvis du vil bruge din udvidelse i Power BI Desktop, skal du kopiere outputfilen for dit connectorprojekt (TripPin.mez) til mappen Brugerdefinerede Forbind orer.
- Opret mappen [Dokumenter]\Power BI Desktop\Brugerdefinerede Forbind orer.
- Kopiér filtypenavnet (TripPin.mez) til denne mappe.
- Markér indstillingen (anbefales ikke) Tillad indlæsning af en hvilken som helst udvidelse uden validering eller advarsel i Power BI Desktop (under Filindstillinger>Indstillinger>Indstillinger>Sikkerhedsdataudvidelser).>
- Genstart Power BI Desktop.
- Vælg Hent data > Mere for at åbne dialogboksen Hent data .
Du kan finde filtypenavnet ved at skrive navnet i søgefeltet.
Vælg funktionsnavnet, og vælg Forbind. Der vises en meddelelse fra tredjepart. Vælg Fortsæt for at fortsætte. Dialogboksen funktionsaktivering vises nu. Angiv rod-URL-adressen til tjenesten (https://services.odata.org/v4/TripPinService/
), og vælg OK.
Da det er første gang, du får adgang til denne datakilde, modtager du en meddelelse om legitimationsoplysninger. Kontrollér, at den korteste URL-adresse er valgt, og vælg derefter Forbind.
Bemærk, at navigatoren vises i stedet for at hente en simpel tabel med data. Dette skyldes, at funktionen OData.Feed returnerer en tabel med særlige metadata oven på den, som Power Query-oplevelsen ved at vise som en navigationstabel. Denne gennemgang dækker, hvordan du kan oprette og tilpasse din egen navigationstabel i en fremtidig lektion.
Vælg tabellen Mig , og vælg derefter Transformér data. Bemærk, at kolonnerne allerede har tildelt typer (ja, de fleste af dem). Dette er en anden funktion i den underliggende OData.Feed-funktion . Hvis du ser anmodningerne i Fiddler, kan du se, at du har hentet tjenestens $metadata dokument. Programmets OData-implementering gør dette automatisk for at bestemme tjenestens skema, datatyper og relationer.
Konklusion
I denne lektion blev du gennemgået oprettelsen af en enkel connector baseret på biblioteksfunktionen OData.Feed . Som du så, kræves der kun lidt logik for at aktivere en fuldt funktionel connector over OData
basisfunktionen. Andre udvidelsesfunktioner, f.eks . ODBC. DataSource, levere lignende egenskaber.
I den næste lektion skal du erstatte brugen af OData.Feed med en funktion, der er mindre kompatibel – Web.Contents. Hver lektion implementerer flere connectorfunktioner, herunder sideinddeling, metadata/skemaregistrering og forespørgselsdelegering til OData-forespørgselssyntaksen, indtil din brugerdefinerede connector understøtter det samme interval af funktioner som OData.Feed.