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 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:
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:
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.