Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Navigationstabeller (eller navigationstabeller) er en kernekomponent i at give en brugervenlig oplevelse for din connector. Power Query-oplevelsen viser dem til brugeren, efter de har indtastet eventuelle nødvendige parametre til din datakildefunktion og er autentificeret med datakilden.
Bag kulisserne er en navigationstabel blot en almindelig M-tabelværdi med specifikke metadatafelter defineret på dens type. Når din datakildefunktion returnerer en tabel med disse felter defineret, vil Power Query vise navigatordialogen. Du kan faktisk se de underliggende data som en Tabel-værdi ved at højreklikke på rod-noden og vælge Rediger.
Table.ToNavigationTable
Du kan bruge Table.ToNavigationTable funktionen til at tilføje den tabeltypemetadata, der er nødvendig for at oprette en navigationstabel.
Notat
Du skal i øjeblikket kopiere og indsætte denne funktion i din M-udvidelse. I fremtiden vil det sandsynligvis blive flyttet ind i M-standardbiblioteket.
Følgende tabel beskriver parametrene for denne funktion:
| Parameter | Oplysninger |
|---|---|
| tabel | Din navigationstabel. |
| keyColumns | Liste over kolonnenavne, der fungerer som primærnøgle for din navigationstabel. |
| nameKolonne | Navnet på den kolonne, der skal bruges som visningsnavn i navigatoren. |
| dataKolonne | Navnet på kolonnen, der indeholder tabellen eller funktionen, der skal vises. |
| itemKindColumn | Navnet på kolonnen, der skal bruges til at bestemme typen af ikon, der skal vises. Se nedenfor for listen over gyldige værdier for kolonnen. |
| itemNameKolonne | Navnet på kolonnen, der skal bruges til at bestemme forhåndsvisningsadfærden. Dette sættes typisk til samme værdi som itemKind. |
| isLeafColumn | Navnet på kolonnen, der bruges til at afgøre, om dette er en bladnode, eller om noden kan udvides til at indeholde en anden navigationstabel. |
Funktionen tilføjer følgende metadata til tabeltypen:
| Felt | Parameter |
|---|---|
| NavigationTable.NameColumn | nameKolonne |
| NavigationTable.DataColumn | dataKolonne |
| NavigationTable.ItemKindColumn | itemKindColumn |
| NavigationTable.IsLeafColumn | isLeafColumn |
| Preview.DelayColumn | itemNameKolonne |
Værdier for ItemKind
Hver af følgende værdier for objekttype giver et forskelligt ikon i navigationstabellen.
- Fodre
- Database
- DatabaseServer
- Dimension
- Tabel
- Folder
- Funktion
- Vis
- Lagen
- DefinedName
- Post
Eksempler
Flad navigationstabel
Følgende kodeeksempel viser en flad navigationstabel med tre tabeller og en funktion.
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"}});
Denne kode vil resultere i følgende Navigator-visning i Power BI Desktop:
Flerniveau-navigationstabel
Det er muligt at bruge indlejrede navigationstabeller til at skabe en hierarkisk visning over dit datasæt. Du gør dette ved at sætte værdien IsLeaf for den række til false (hvilket markerer den som en node, der kan udvides), og formatere kolonnen Data til også at være en anden navigationstabel.
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;
Denne kode vil resultere i følgende Navigator-visning i Power BI Desktop:
Dynamiske navigationstabeller
Mere kompleks funktionalitet kan bygges ud fra disse grundlæggende elementer. Selvom alle ovenstående eksempler viser hardkodede enheder i navigationstabellen, er det let at se, hvordan en navigationstabel kan genereres dynamisk baseret på enheder, der er tilgængelige for en given bruger. Nogle få vigtige overvejelser for dynamiske navigationstabeller inkluderer:
- Fejlhåndtering for at sikre en god oplevelse for brugere, der ikke har adgang til visse endepunkter.
- Nodeevaluering er som udgangspunkt dovent; Bladknudepunkter evalueres ikke, før forældreknuden er udvidet. Visse implementeringer af flerniveau dynamiske navigationstabeller kan resultere i en ivrig evaluering af hele træet. Sørg for at overvåge antallet af kald, som Power Query foretager, når navigationstabellen vises i starten. For eksempel er Table.InsertRows 'dovnere' end Table.FromRecords, da den ikke behøver at evaluere sine argumenter.