TripPin del 1 – Datakobling for en OData-tjeneste
Denne flerdelte opplæringen dekker opprettelsen av en ny datakildeutvidelse for Power Query. Opplæringen er ment å gjøres sekvensielt – hver leksjon bygger på koblingen som er opprettet i tidligere leksjoner, og legger trinnvis til nye funksjoner i koblingen.
I denne leksjonen vil du:
- Opprett et nytt Data Koble til or-prosjekt ved hjelp av Power Query SDK
- Redigere en basisfunksjon for å hente data fra en kilde
- Test koblingen i Power Query SDK
- Registrere koblingen i Power BI Desktop
Opprette en grunnleggende OData-kobling
I denne delen oppretter du et nytt Data Koble til or-prosjekt, gir grunnleggende informasjon og tester det i Power Query SDK.
Åpne Visual Studio Code. Vi anbefaler at du oppretter et nytt arbeidsområde og deretter oppretter et nytt utvidelsesprosjekt. Hvis du vil opprette det nye utvidelsesprosjektet, åpner du utforskeren og velger knappen Opprett et utvidelsesprosjekt i Delen Power Query SDK.
Når du har valgt denne knappen, blir du bedt om å angi navnet på det nye prosjektet. Gi nytt navn til dette nye prosjektet TripPin
.
Åpne TripPin.pq-filen og lim inn i følgende koblingsdefinisjon.
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 koblingsdefinisjonen inneholder:
- En definisjonspost for datakilde for TripPin-koblingen
- En deklarasjon om at Implisitt (anonym) er den eneste godkjenningstypen for denne kilden
- En funksjon (
TripPinImpl
) med en implementering som kaller OData.Feed - En delt funksjon (
TripPin.Feed
) som angir parametertypen tilUri.Type
- En publiseringspost for datakilde som gjør at koblingen kan vises i dialogboksen Hent data i Power Query
Åpne TripPin.query.pq-filen. Erstatt gjeldende innhold med et kall til den eksporterte funksjonen.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Før du kan teste koblingen, må du bygge den. Hvis du vil gjøre dette, kan du gå til terminalen og velge alternativet Kjør bygg oppgave ... (hurtigtast CTRL + SKIFT + B). Vi anbefaler at du velger Alternativet MakePQX , men begge alternativene som er tilgjengelige for bygg, skal fungere.
Resultatet av denne operasjonen oppretter en ny bin-mappe der den innebygde koblingen lagres som TripPin.mez.
Project.query.pq-filen <>brukes til å teste ut utvidelsen uten å måtte distribuere den til bin-mappen i Power BI Desktop. Bruke verktøyene som er tilgjengelige i Power Query SDK:
- Velg alternativet for å angi legitimasjon.
- Velg TripPin som datakilde.
- Velg TripPin.query.pq-filen som spørrings-/testfil.
- Velg anonym som godkjenningstype.
I utdatadialogboksen vises en melding som bekrefter at du har angitt en legitimasjon for datakilden og detaljene for hver legitimasjon som er opprettet.
Merk
Du kan alltid fjerne legitimasjonen ved hjelp av kommandoen Fjern ALL legitimasjon eller kontrollere den tilgjengelige legitimasjonen ved hjelp av kommandoen Listelegitimasjon i Power Query SDK-verktøyene.
Med legitimasjonen nå på plass, velger du TripPin.query.pq-filen og velger enten i dokumentet for å evaluere gjeldende power query-fil eller bruke alternativet for å evaluere gjeldende fil fra Power Query SDK-verktøyene.
Utdatadialogboksen viser en melding om resultatene fra evalueringen, samt et nytt vindu med navnet PQTest-resultat.
Resultatvinduet for PQTest består av tre faner:
- Utdata: Viser en forhåndsvisning av dataene i et rutenett.
- Sammendrag: Generelle evalueringsdetaljer som StartTime, EndTime, Duration, filen som ble brukt til evalueringen, statusen og mer.
- Datakilde: Gir informasjon om datakilden som ble brukt fra typen, funksjonsnavnet og banen.
Du kan prøve noen forskjellige OData-nettadresser i testfilen for å se hvordan ulike resultater returneres. Eksempel:
https://services.odata.org/v4/TripPinService/Me
https://services.odata.org/v4/TripPinService/GetPersonWithMostFriends()
https://services.odata.org/v4/TripPinService/People
TripPin.query.pq-filen kan inneholde enkle setninger, la setninger eller fullstendige inndelingsdokumenter.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Viktig
Pass på at du alltid lagrer filene mens du arbeider. Hvis du gjør endringer i TripPin.pq-filen, bør du alltid utløse en etterfølgende byggoppgave for å sikre at du tester mot den nyeste versjonen av koblingen.
Åpne Fiddler for å registrere HTTP-trafikk, og kjør spørringen. Du bør se noen forskjellige forespørsler om å services.odata.org, generert av prosessen for mashup-beholderen. Du kan se at tilgang til den primære NETTADRESSEn for tjenesten resulterer i en 302-status og en omdirigering til den lengre versjonen av nettadressen. Følgende omadresseringer er en annen virkemåte du får «gratis» fra funksjonene i basisbiblioteket.
Én ting å merke seg hvis du ser på nettadressene, er at du kan se spørringsdelegeringen som skjedde med setningen SelectColumns
.
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
Hvis du legger til flere transformasjoner i spørringen, kan du se hvordan de påvirker den genererte nettadressen.
Denne virkemåten er viktig å merke seg. Selv om du ikke implementerte eksplisitt foldinglogikk, arver koblingen disse funksjonene fra OData.Feed-funksjonen . M-setninger kan skrives – filterkontekster flyter fra én funksjon til en annen, når det er mulig. Dette ligner på måten datakildefunksjoner som brukes i koblingen arver godkjenningskonteksten og legitimasjonen. I senere leksjoner erstatter du bruken av OData.Feed, som har opprinnelige foldingsfunksjoner, med Web.Contents, som ikke gjør det. Hvis du vil ha samme funksjonalitetsnivå, må du bruke grensesnittet Table.View
og implementere din egen eksplisitte foldelogikk.
Laster inn utvidelsen i Power BI Desktop
Hvis du vil bruke utvidelsen i Power BI Desktop, må du kopiere utdatafilen for koblingsprosjektet (TripPin.mez) til katalogen Egendefinerte Koble til orer.
- Opprett en [Mine dokumenter]\Power BI Desktop\Katalog for egendefinerte Koble til orer.
- Kopier filtypen (TripPin.mez) til denne katalogen.
- Merk av for alternativet (anbefales ikke) Tillat at filtyper lastes inn uten validering eller advarsel i Power BI Desktop (under Filalternativer>og innstillinger>Alternativer for>sikkerhetsdatautvidelser).>
- Start Power BI Desktop på nytt.
- Velg Hent data > mer for å hente frem dialogboksen Hent data .
Du kan finne utvidelsen ved å skrive inn navnet i søkeboksen.
Velg funksjonsnavnet, og velg Koble til. En tredjepartsmelding vises– velg Fortsett for å fortsette. Dialogboksen for funksjonsaktivering vises nå. Skriv inn rot-URL-adressen for tjenesten (https://services.odata.org/v4/TripPinService/
), og velg OK.
Siden dette er første gang du får tilgang til denne datakilden, får du en melding om legitimasjon. Kontroller at den korteste URL-adressen er valgt, og velg deretter Koble til.
Legg merke til at i stedet for å få en enkel tabell med data, vises navigatøren. Dette er fordi OData.Feed-funksjonen returnerer en tabell med spesielle metadata oppå den som Power Query-opplevelsen vet skal vises som en navigasjonstabell. Denne gjennomgangen dekker hvordan du kan opprette og tilpasse din egen navigasjonstabell i en fremtidig leksjon.
Velg Meg-tabellen, og velg deretter Transformer data. Legg merke til at kolonnene allerede har tilordnede typer (de fleste av dem). Dette er en annen funksjon i den underliggende OData.Feed-funksjonen . Hvis du ser forespørslene i Fiddler, ser du at du har hentet tjenestens $metadata dokument. Motorens OData-implementering gjør dette automatisk for å bestemme tjenestens skjema, datatyper og relasjoner.
Konklusjon
Denne leksjonen veiledet deg gjennom opprettingen av en enkel kobling basert på OData.Feed-bibliotekfunksjonen . Som du så, er det nødvendig med lite logikk for å aktivere en fullstendig funksjonell kobling over basisfunksjonen OData
. Andre utvidelsesaktiverte funksjoner, for eksempel ODBC. DataSource gir lignende funksjoner.
I neste leksjon erstatter du bruken av OData.Feed med en mindre kompatibel funksjon – Web.Contents. Hver leksjon implementerer flere koblingsfunksjoner, inkludert sideveksling, metadata/skjemagjenkjenning og spørringsdelegering til OData-spørringssyntaksen, helt til den egendefinerte koblingen støtter samme funksjonsområde som OData.Feed.