TripPin del 1 – Dataanslutning för en OData-tjänst
Den här självstudien i flera delar beskriver hur du skapar ett nytt datakällans tillägg för Power Query. Självstudien är avsedd att utföras sekventiellt – varje lektion bygger på anslutningsappen som skapades i föregående lektioner och lägger stegvis till nya funktioner i anslutningsappen.
I den här lektionen kommer du att:
- Skapa ett nytt Data Anslut eller-projekt med Power Query SDK
- Skapa en basfunktion för att hämta data från en källa
- Testa anslutningsappen i Power Query SDK
- Registrera anslutningsappen i Power BI Desktop
Skapa en grundläggande OData-anslutning
I det här avsnittet skapar du ett nytt Data Anslut eller-projekt, tillhandahåller grundläggande information och testar den i Power Query SDK.
Öppna Visual Studio Code. Vi rekommenderar att du skapar en ny arbetsyta och sedan skapar ett nytt tilläggsprojekt. Om du vill skapa det nya tilläggsprojektet öppnar du utforskaren och i avsnittet Power Query SDK väljer du knappen Skapa ett tilläggsprojekt .
När du har valt den här knappen uppmanas du att ange namnet på det nya projektet. Ge det här nya projektet TripPin
namnet .
Öppna filen TripPin.pq och klistra in följande anslutningsdefinition.
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" }
];
Den här anslutningsdefinitionen innehåller:
- En datakällas definitionspost för TripPin-anslutningsappen
- En deklaration om att Implicit (anonym) är den enda autentiseringstypen för den här källan
- En funktion (
TripPinImpl
) med en implementering som anropar OData.Feed - En delad funktion (
TripPin.Feed
) som anger parametertypen tillUri.Type
- En publiceringspost för datakälla som gör att anslutningsappen kan visas i dialogrutan Hämta data i Power Query
Öppna filen TripPin.query.pq. Ersätt det aktuella innehållet med ett anrop till den exporterade funktionen.
TripPin.Feed("https://services.odata.org/v4/TripPinService/")
Innan du kan testa anslutningsappen måste du skapa den. Det gör du genom att gå till terminalen och välja alternativet Kör byggaktivitet... (Kortkommando Ctrl + Skift + B). Vi rekommenderar att du väljer alternativet MakePQX , men båda alternativen som är tillgängliga för att bygga bör fungera.
Resultatet av den här åtgärden skapar en ny bin-mapp där den skapade anslutningsappen lagras som TripPin.mez.
Filen <project.query.pq> används för att testa ditt tillägg utan att behöva distribuera det till din Power BI Desktop-bin-mapp. Använd de verktyg som är tillgängliga i Power Query SDK:
- Välj alternativet ange autentiseringsuppgifter.
- Välj TripPin som datakälla.
- Välj filen TripPin.query.pq som fråge-/testfil.
- Välj anonym som autentiseringstyp.
I utdatadialogrutan visas ett meddelande som bekräftar att du har angett en autentiseringsuppgift för datakällan och informationen för varje autentiseringsuppgift som skapas.
Kommentar
Du kan alltid rensa autentiseringsuppgifterna med kommandot Rensa ALLA autentiseringsuppgifter eller kontrollera de tillgängliga autentiseringsuppgifterna med kommandot Lista autentiseringsuppgifter i Power Query SDK-verktygen.
När autentiseringsuppgifterna nu är på plats väljer du filen TripPin.query.pq och väljer antingen rätt i dokumentet för att utvärdera aktuell power query-fil eller använder alternativet För att utvärdera aktuell fil från Power Query SDK-verktygen.
I utdatadialogrutan visas ett meddelande om resultatet från utvärderingen samt ett nytt fönster med namnet PQTest-resultat.
PQTest-resultatfönstret består av tre flikar:
- Utdata: Visar en förhandsgranskning av dina data i ett rutnät.
- Sammanfattning: Allmän utvärderingsinformation som StartTime, EndTime, Duration, filen som användes för utvärderingen, status med mera.
- DataSource: Innehåller information om datakällan som användes från sorten, funktionsnamnet och sökvägen.
Du kan prova några olika OData-URL:er i testfilen för att se hur olika resultat returneras. Till exempel:
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 innehålla enkla instruktioner, let-instruktioner eller fullständiga avsnittsdokument.
let
Source = TripPin.Feed("https://services.odata.org/v4/TripPinService/"),
People = Source{[Name="People"]}[Data],
SelectColumns = Table.SelectColumns(People, {"UserName", "FirstName", "LastName"})
in
SelectColumns
Viktigt!
Se till att alltid spara dina filer när du arbetar. Om du gör ändringar i din TripPin.pq-fil bör du alltid utlösa en efterföljande bygguppgift för att se till att du testar mot den senaste versionen av anslutningsappen.
Öppna Fiddler för att samla in HTTP-trafik och kör frågan. Du bör se några olika begäranden att services.odata.org, som genereras av kombinationscontainerprocessen. Du kan se att åtkomsten till tjänstens rot-URL resulterar i statusen 302 och en omdirigering till den längre versionen av URL:en. Följande omdirigeringar är ett annat beteende som du får "kostnadsfritt" från basbiblioteksfunktionerna.
En sak att notera om du tittar på URL:erna är att du kan se frågedelegeringen som hände med -instruktionen SelectColumns
.
https://services.odata.org/v4/TripPinService/People?$select=UserName%2CFirstName%2CLastName
Om du lägger till fler transformeringar i din fråga kan du se hur de påverkar den genererade URL:en.
Det här beteendet är viktigt att notera. Även om du inte implementerade explicit vikningslogik ärver anslutningsappen dessa funktioner från funktionen OData.Feed . M-uttryck är compose-able – filterkontexter flödar från en funktion till en annan när det är möjligt. Detta liknar i begreppet hur datakällans funktioner som används i anslutningsappen ärver deras autentiseringskontext och autentiseringsuppgifter. I senare lektioner ersätter du användningen av OData.Feed, som har inbyggda vikningsfunktioner, med Web.Contents, vilket inte gör det. För att få samma nivå av funktioner måste du använda Table.View
gränssnittet och implementera din egen explicita vikningslogik.
Läser in tillägget i Power BI Desktop
Om du vill använda tillägget i Power BI Desktop måste du kopiera anslutningsprojektets utdatafil (TripPin.mez) till katalogen Custom Anslut ors.
- Skapa en [Mina dokument]\Power BI Desktop\Custom Anslut ors-katalog.
- Kopiera tilläggsfilen (TripPin.mez) till den här katalogen.
- Kontrollera alternativet (rekommenderas inte) Tillåt att alla tillägg läses in utan validering eller varning i Power BI Desktop (under Filalternativ>och inställningar>Alternativ>Säkerhetsdatatillägg).>
- Starta om Power BI Desktop.
- Välj Hämta data > mer för att öppna dialogrutan Hämta data .
Du kan hitta tillägget genom att skriva dess namn i sökrutan.
Välj funktionsnamnet och välj Anslut. Ett meddelande från tredje part visas – välj Fortsätt för att fortsätta. Dialogrutan funktionsanrop visas nu. Ange rot-URL:en för tjänsten (https://services.odata.org/v4/TripPinService/
) och välj OK.
Eftersom det är första gången du kommer åt den här datakällan får du en uppmaning om autentiseringsuppgifter. Kontrollera att den kortaste URL:en är markerad och välj sedan Anslut.
Observera att i stället för att hämta en enkel datatabell visas navigatören. Det beror på att funktionen OData.Feed returnerar en tabell med särskilda metadata ovanpå den som Power Query-upplevelsen vet visas som en navigeringstabell. Den här genomgången beskriver hur du kan skapa och anpassa din egen navigeringstabell i en framtida lektion.
Välj tabellen Jag och välj sedan Transformera data. Observera att kolumnerna redan har tilldelade typer (ja, de flesta). Det här är en annan funktion i den underliggande funktionen OData.Feed . Om du tittar på begäranden i Fiddler ser du att du har hämtat tjänstens $metadata dokument. Motorns OData-implementering gör detta automatiskt för att fastställa tjänstens schema, datatyper och relationer.
Slutsats
I den här lektionen gick vi igenom skapandet av en enkel anslutningsapp baserat på biblioteksfunktionen OData.Feed . Som du såg behövs lite logik för att aktivera en fullt fungerande anslutningsapp över OData
basfunktionen. Andra utökningsbarhetsaktiverade funktioner, till exempel ODBC. DataSource, ge liknande funktioner.
I nästa lektion ersätter du användningen av OData.Feed med en mindre kapabel funktion – Web.Contents. Varje lektion implementerar fler anslutningsfunktioner, inklusive växling, metadata/schemaidentifiering och frågedelegering till OData-frågesyntaxen, tills din anpassade anslutningsapp har stöd för samma uppsättning funktioner som OData.Feed.