TripPin-osa 3 – Siirtymistaulukot
Tässä moniosaisessa opetusohjelmassa käsitellään uuden tietolähdelaajennuksen luomista Power Querylle. Opetusohjelma on tarkoitus tehdä järjestyksessä – jokainen oppitunti perustuu aiemmilla oppitunneilla luotuun liittimeen ja lisää uusia ominaisuuksia liittimeen.
Tällä oppitunnilla:
- Siirtymistaulukon luominen kiinteälle kyselyjoukolle
- Siirtymistaulukon testaaminen Power BI Desktopissa
Tällä oppitunnilla lisäät siirtymistaulukon edellisellä oppitunnilla luotuun TripPin-liittimeen. Kun liittimesi käytti funktiota OData.Feed
(osa 1), sait siirtymistaulukon "ilmaiseksi", joka on johdettu OData-palvelun $metadata asiakirjasta. Kun siirryit funktioon Web.Contents
(osa 2), menetit sisäänrakennetun siirtymistaulukon. Tällä oppitunnilla suoritat joukon Power BI Desktopissa luomiasi kiinteitä kyselyitä ja lisäät Power Querylle metatiedot, joiden avulla voit avata tietolähdefunktiosi Siirtymistoiminto-valintaikkunan .
Lisätietoja siirtymistaulukoiden käyttämisestä on siirtymistaulukon ohjeissa .
Kiinteiden kyselyiden määrittäminen liittimessä
Rest-ohjelmointirajapinnan yksinkertaista liitintä voidaan ajatella kiinteänä kyselyjoukkona, joista jokainen palauttaa taulukon. Nämä taulukot on helppo löytää liittimen siirtymistaulukon kautta. Käytännössä jokainen siirtymistoiminnon kohde liittyy tiettyyn URL-osoitteeseen ja muunnosten joukkoon.
Aloita kopioimalla Power BI Desktopissa (edellisellä oppitunnilla) kirjoittamasi kyselyt liitintiedostoon. Avaa TripPin-projekti Visual Studio Codessa ja liitä Airlines and Airports -kyselyt TripPin.pq-tiedostoon. Voit sitten muuttaa kyselyt funktioiksi, jotka ottavat yhden tekstiparametrin:
GetAirlinesTable = (url as text) as table =>
let
source = TripPin.Feed(url & "Airlines"),
value = source[value],
toTable = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expand = Table.ExpandRecordColumn(toTable, "Column1", {"AirlineCode", "Name"}, {"AirlineCode", "Name"})
in
expand;
GetAirportsTable = (url as text) as table =>
let
source = TripPin.Feed(url & "Airports"),
value = source[value],
#"Converted to Table" = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Name", "IcaoCode", "IataCode", "Location"}, {"Name", "IcaoCode", "IataCode", "Location"}),
#"Expanded Location" = Table.ExpandRecordColumn(#"Expanded Column1", "Location", {"Address", "Loc", "City"}, {"Address", "Loc", "City"}),
#"Expanded City" = Table.ExpandRecordColumn(#"Expanded Location", "City", {"Name", "CountryRegion", "Region"}, {"Name.1", "CountryRegion", "Region"}),
#"Renamed Columns" = Table.RenameColumns(#"Expanded City",{{"Name.1", "City"}}),
#"Expanded Loc" = Table.ExpandRecordColumn(#"Renamed Columns", "Loc", {"coordinates"}, {"coordinates"}),
#"Added Custom" = Table.AddColumn(#"Expanded Loc", "Latitude", each [coordinates]{1}),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Longitude", each [coordinates]{0}),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"coordinates"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Name", type text}, {"IcaoCode", type text}, {"IataCode", type text}, {"Address", type text}, {"City", type text}, {"CountryRegion", type text}, {"Region", type text}, {"Latitude", type number}, {"Longitude", type number}})
in
#"Changed Type";
Seuraavaksi tuot kirjoittamasi mallisi siirtymistaulukon kyselyn, joka luo kiinteän taulukon, joka linkittää näihin tietojoukkokyselyihin. Kutsu sitä TripPinNavTable
:
TripPinNavTable = (url as text) as table =>
let
source = #table({"Name", "Data"}, {
{ "Airlines", GetAirlinesTable(url) },
{ "Airports", GetAirportsTable(url) }
})
in
source;
Lopuksi esitellään uusi jaettu funktio, TripPin.Contents
, jota käytetään päätietolähdefunktiona. Poistat arvon myös Publish
arvostaTripPin.Feed
, jotta se ei enää näy Nouda tiedot -valintaikkunassa.
[DataSource.Kind="TripPin"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);
[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Contents = Value.ReplaceType(TripPinNavTable, type function (url as Uri.Type) as any);
Muistiinpano
Laajennus voi merkitä useita funktioita merkillä shared
, ja tai ilman, että ne liittyvät :een DataSource.Kind
. Kuitenkin, kun liität funktion tiettyyn DataSource.Kind
-funktioon, jokaisella funktiolla on oltava samat pakolliset parametrit, joilla on sama nimi ja tyyppi. Tämä johtuu siitä, että tietolähdefunktioparametrit yhdistetään välimuistissa olevien tunnistetietojen etsimiseen käytettäväksi avaimeksi.
Luo liittimesi, kun olet viimeistelty kaikki muutokset, ja testaa funktiotasi TripPin.Contents
TripPin.query.pq-tiedoston avulla. Voit jatkaa aiemmin luodun tunnistetietojen käyttämistä tai voit määrittää uuden ja arvioida sitten nykyisen Power Query -tiedostosi.
TripPin.Contents("https://services.odata.org/v4/TripPinService/")
Siirtymistaulukon luominen
Kätevän Table.ToNavigationTable-funktion avulla voit muotoilla staattisen taulukon sellaiseksi, jonka Power Query tunnistaa siirtymistaulukoksi. Koska tämä funktio ei ole osa Power Queryn vakiokirjastoa, sinun on kopioitava sen lähdekoodi .pq-tiedostoon.
Kun tämä apufunktio on käytössä, lisää siirtymistaulukon kentät päivittämällä funktio seuraavaksi TripPinNavTable
.
TripPinNavTable = (url as text) as table =>
let
source = #table({"Name", "Data", "ItemKind", "ItemName", "IsLeaf"}, {
{ "Airlines", GetAirlinesTable(url), "Table", "Table", true },
{ "Airports", GetAirportsTable(url), "Table", "Table", true }
}),
navTable = Table.ToNavigationTable(source, {"Name"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
in
navTable;
Suorittamalla testikyselyn uudelleen liittimen luomisen jälkeen saat samanlaisen tuloksen kuin edellisellä kerralla – ja lisää sarakkeita on lisätty.
Muistiinpano
Siirtymistoimintoikkunaa ei näy Visual Studio Coden PQTest-tulosikkunassa. M-kyselyn tuloste-ikkuna näyttää aina pohjana olevan taulukon.
Jos kopioit laajennuksen Power BI Desktopin mukautettuun liittimeen ja käynnistät uuden funktion Nouda tiedot -valintaikkunassa, näkyviin tulee siirtymistoiminto.
Jos valitset siirtymispuun juuresta hiiren kakkospainikkeella Muokkaa, näet saman taulukon kuin Visual Studiossa.
Yhteenveto
Tässä opetusohjelmassa lisäsit laajennukseen siirtymistaulukon . Siirtymistaulukot ovat tärkeä ominaisuus, joka helpottaa liittimien käyttöä. Tässä esimerkissä siirtymistaulukossa on vain yksi taso, mutta Power Queryn käyttöliittymä tukee sellaisen siirtymistaulukon näyttämistä, jossa on useita mittoja (vaikka ne ovat vaillinaisia).