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


Navigáció kezelése

A navigációs táblák (vagy navigációs táblák) az összekötő felhasználóbarát felületének alapvető részét képezik. A Power Query felülete megjeleníti őket a felhasználónak, miután megadta az adatforrásfüggvényhez szükséges paramétereket, és hitelesítette őket az adatforrással.

A TripPin navigációs táblázat.

A háttérben egy navigációs tábla csak egy normál M táblaérték, amelynek típusában meghatározott metaadatmezők jelennek meg. Amikor az adatforrásfüggvény egy táblát ad vissza a megadott mezőkkel, a Power Query megjeleníti a kezelő párbeszédpanelt. A mögöttes adatokat valójában táblaértékként tekintheti meg, ha a jobb gombbal a gyökércsomópontra kattint, és kiválasztja a Szerkesztés lehetőséget.

Table.ToNavigationTable

A függvény használatával Table.ToNavigationTable hozzáadhatja a navigációs tábla létrehozásához szükséges táblatípus metaadatait.

Feljegyzés

Ezt a függvényt jelenleg az M-bővítménybe kell másolnia és beillesztenie. A jövőben valószínűleg át lesz helyezve az M standard könyvtárba.

Az alábbi táblázat a függvény paramétereit ismerteti:

Paraméter Részletek
table A navigációs táblázat.
keyColumns Azon oszlopnevek listája, amelyek a navigációs tábla elsődleges kulcsaként szolgálnak.
nameColumn Annak az oszlopnak a neve, amelyet megjelenítendő névként kell használni a kezelőben.
dataColumn A megjelenítendő táblát vagy függvényt tartalmazó oszlop neve.
itemKindColumn A megjelenítendő ikon típusának meghatározásához használandó oszlop neve. Az oszlop érvényes értékeinek listáját alább találja.
itemNameColumn Az előnézeti viselkedés meghatározásához használandó oszlop neve. Ez általában az itemKind értékével megegyező értékre van beállítva.
isLeafColumn Annak az oszlopnak a neve, amely meghatározza, hogy levélcsomópontról van-e szó, vagy hogy a csomópont kibontható-e, hogy egy másik navigációs táblát tartalmazzon.

A függvény a következő metaadatokat adja hozzá a táblatípushoz:

Mező Paraméter
NavigationTable.NameColumn nameColumn
NavigationTable.DataColumn dataColumn
NavigationTable.ItemKindColumn itemKindColumn
NavigationTable.IsLeafColumn isLeafColumn
Preview.DelayColumn itemNameColumn

Az ItemKind értékei

Az alábbi elemtípus-értékek mindegyike egy másik ikont ad a navigációs táblában.

  • Csatorna
  • Adatbázis
  • DatabaseServer
  • Dimenzió
  • Tábla
  • Mappa
  • Függvény
  • Nézet
  • Lapot
  • DefinedName
  • Rögzítés

Példák

Lapos navigációs táblázat

Az alábbi kódminta egy lapos navigációs táblázatot jelenít meg három táblával és egy függvénnyel.

shared NavigationTable.Simple = () =>
    let
        objects = #table(
            {"Name",       "Key",        "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1",      "item1",      #table({"Column1"}, {{"Item1"}}), "Table",    "Table",    true},
            {"Item2",      "item2",      #table({"Column1"}, {{"Item2"}}), "Table",    "Table",    true},
            {"Item3",      "item3",      FunctionCallThatReturnsATable(),  "Table",    "Table",    true},            
            {"MyFunction", "myfunction", AnotherFunction.Contents,       "Function", "Function", true}
            }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

shared FunctionCallThatReturnsATable = () =>
    #table({"DynamicColumn"}, {{"Dynamic Value"}});

Ez a kód a következő Navigátor megjelenítést eredményezi a Power BI Desktopban:

Egy sima navigációs táblázat mintája.

Többszintű navigációs táblázat

Beágyazott navigációs táblák használatával hierarchikus nézetet hozhat létre az adatkészleten. Ezt úgy teheti meg, hogy az IsLeaf adott sor false értékét (amely kibontható csomópontként jelöli), és formázza az Data oszlopot egy másik navigációs táblázatként is.

shared NavigationTable.Nested = () as table =>
    let
        objects = #table(
            {"Name",       "Key",  "Data",                "ItemKind", "ItemName", "IsLeaf"},{
            {"Nested A",   "n1",   CreateNavTable("AAA"), "Table",    "Table",    false},
            {"Nested B",   "n2",   CreateNavTable("BBB"), "Table",    "Table",    false},
            {"Nested C",   "n3",   CreateNavTable("CCC"), "Table",    "Table",    false}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

CreateNavTable = (message as text) as table => 
    let
        objects = #table(
            {"Name",  "Key",   "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1", "item1", #table({"Column1"}, {{message}}), "Table",    "Table",    true},
            {"Item2", "item2", #table({"Column1"}, {{message}}), "Table",    "Table",    true}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

Ez a kód a következő Navigátor megjelenítést eredményezné a Power BI Desktopban:

Hierarchikus navigációs táblázat mintája.

Dinamikus navigációs táblák

Ezekből az alapokból összetettebb funkciók hozhatók létre. Bár az összes fenti példa a navigációs táblában található, szigorúan kódolt entitásokat mutat be, könnyen áttekinthető, hogyan hozható létre dinamikusan egy navigációs tábla az adott felhasználó számára elérhető entitások alapján. A dinamikus navigációs táblák néhány fontos szempontja a következők:

  • Hibakezelés a megfelelő felhasználói élmény biztosítása érdekében, amelyek nem rendelkeznek hozzáféréssel bizonyos végpontokhoz.
  • A csomópontok kiértékelése alapértelmezés szerint lusta; a rendszer csak a szülőcsomópont kibontása után értékeli ki a levélcsomópontokat. A többszintű dinamikus navigációs táblák bizonyos implementációi a teljes fa lelkes kiértékelését eredményezhetik. Ügyeljen arra, hogy figyelje a Power Query által kezdeményezett hívások számát, mivel az eredetileg megjeleníti a navigációs táblát. A Table.InsertRows például "lazább", mint a Table.FromRecords, mivel nem kell kiértékelnie az argumentumait.