Megosztás a következőn keresztül:


TripPin 3. rész – Navigációs táblák

Ez a többrészes oktatóanyag a Power Query új adatforrásbővítményének létrehozását ismerteti. Az oktatóanyagot egymás után kell elvégezni – minden lecke az előző leckékben létrehozott összekötőre épül, és növekményesen új képességeket ad hozzá az összekötőhöz.

Ebben a leckében a következőt fogja:

  • Navigációs tábla létrehozása rögzített lekérdezéskészlethez
  • A navigációs táblázat tesztelése a Power BI Desktopban

Ez a lecke egy navigációs táblát ad hozzá az előző leckében létrehozott TripPin-összekötőhöz. Amikor az összekötő használta a OData.Feed függvényt (1. rész), az OData szolgáltatás $metadata dokumentumából származó "ingyen" navigációs táblázatot kapta. Amikor a Web.Contents függvényre váltott (2. rész), elvesztette a beépített navigációs táblázatot. Ebben a leckében rögzített lekérdezéseket fog elvégezni, amelyeket a Power BI Desktopban hozott létre, és hozzáadja a Power Query megfelelő metaadatait az adatforrásfüggvény Kezelő párbeszédpaneljének előugró ablakához.

A navigációs táblák használatával kapcsolatos további információkért tekintse meg a navigációs táblázat dokumentációját .

Rögzített lekérdezések definiálása az összekötőben

A REST API egyszerű összekötője egy rögzített lekérdezéskészletnek tekinthető, amely mindegyike egy táblát ad vissza. Ezeket a táblákat az összekötő navigációs táblázatán keresztül lehet felderíteni. A kezelő minden eleme lényegében egy adott URL-címhez és átalakítások készletéhez van társítva.

Először másolja a Power BI Desktopban (az előző leckében) írt lekérdezéseket az összekötőfájlba. Nyissa meg a TripPin projektet a Visual Studio Code-ban, és illessze be a Légitársaságok és repülőterek lekérdezéseket a TripPin.pq fájlba. Ezeket a lekérdezéseket ezután olyan függvényekké alakíthatja, amelyek egyetlen szöveges paramétert vesznek igénybe:

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";

A következő lépésben importálja azt a navigációs tábla lekérdezést, amelyet írt, amely egy rögzített táblát hoz létre, amely az adatkészlet-lekérdezésekhez kapcsolódik. Hívja meg:TripPinNavTable

TripPinNavTable = (url as text) as table =>
    let
        source = #table({"Name", "Data"}, {
            { "Airlines", GetAirlinesTable(url) },
            { "Airports", GetAirportsTable(url) }
        })
    in
        source;

Végül deklarál egy új megosztott függvényt, TripPin.Contentsamely a fő adatforrásfüggvényként használatos. Az értéket is eltávolítjaPublish, hogy az többé ne jelenjön meg az Adatok lekérése párbeszédpanelen.TripPin.Feed

[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);

Feljegyzés

A bővítmény több függvényt sharedis megjelölhet egy DataSource.Kind. Ha azonban egy függvényt egy adott DataSource.Kindfüggvénnyel társít, minden függvénynek ugyanazzal a paraméterkészlettel kell rendelkeznie, ugyanazzal a névvel és típussal. Ennek az az oka, hogy az adatforrásfüggvény paraméterei össze vannak adva, hogy a gyorsítótárazott hitelesítő adatok keresésekor használjon egy "kulcsot".

Az összes módosítás véglegesítése után hozza létre az összekötőt, és tesztelje a függvényt TripPin.Contents a TripPin.query.pq fájllal. Továbbra is használhatja a korábban létrehozott hitelesítő adatokat, vagy beállíthat egy újat, majd kiértékelheti az aktuális Power Query-fájlt.

TripPin.Contents("https://services.odata.org/v4/TripPinService/")

TripPin tábla.

Navigációs tábla létrehozása

A praktikus Table.ToNavigationTable függvénnyel formázhatja a statikus táblát olyanra, amelyet a Power Query navigációs táblaként ismer fel. Mivel ez a függvény nem része a Power Query szabványos kódtárának, a forráskódot a .pq fájlba kell másolnia.

Ha ez a segédfüggvény működik, frissítse a függvényt TripPinNavTable a navigációs tábla mezőinek hozzáadásához.

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;

A teszt lekérdezés ismételt futtatása az összekötő újbóli létrehozása után hasonló eredményt ad, mint a legutóbbi alkalommal – néhány további oszlop hozzáadásával. TripPin Table2.

Feljegyzés

A Kezelő ablak nem jelenik meg a Visual Studio Code PQTest eredményablakában. Az M Lekérdezés kimenete ablak mindig megjeleníti a mögöttes táblát.

Ha a bővítményt átmásolja a Power BI Desktop egyéni összekötőjéhez, és meghívja az új függvényt az Adatok lekérése párbeszédpanelen, megjelenik a kezelője.

TripPin Navigátor.

Ha a navigációs fa gyökerében a Szerkesztés lehetőséget választja, ugyanazt a táblázatot látja, mint a Visual Studióban.

TripPin-lekérdezés.

Összegzés

Ebben az oktatóanyagban egy navigációs táblázatot adott hozzá a bővítményhez. A navigációs táblák kulcsfontosságú funkciók, amelyek megkönnyítik az összekötők használatát. Ebben a példában a navigációs táblázat csak egy szinttel rendelkezik, de a Power Query felhasználói felülete támogatja a több dimenzióval rendelkező navigációs táblák megjelenítését (még akkor is, ha azok nincsenek megjelölve).

Következő lépések

TripPin 4. rész – Adatforrás elérési útjai