Navigatie verwerken
Navigatietabellen (of navigatietabellen) zijn een belangrijk onderdeel van het bieden van een gebruiksvriendelijke ervaring voor uw connector. De Power Query worden weergegeven aan de gebruiker nadat ze de vereiste parameters voor uw gegevensbronfunctie hebben ingevoerd en zijn geverifieerd met de gegevensbron.

Achter de schermen is een navigatietabel slechts een normale M-tabelwaarde met specifieke metagegevensvelden die zijn gedefinieerd op het type. Wanneer uw gegevensbronfunctie een tabel retourneert waarin deze velden zijn gedefinieerd, Power Query het dialoogvenster navigator weergegeven. U kunt de onderliggende gegevens daadwerkelijk zien als een tabelwaarde door met de rechtermuisknop op het hoofd knooppunt te klikken en Bewerken te selecteren.
Table.ToNavigationTable
U kunt de functie gebruiken Table.ToNavigationTable om de metagegevens van het tabeltype toe te voegen die nodig zijn om een navigatietabel te maken.
Notitie
U moet deze functie momenteel kopiëren en plakken in uw M-extensie. In de toekomst wordt deze waarschijnlijk verplaatst naar de standaardbibliotheek van M.
In de volgende tabel worden de parameters voor deze functie beschreven:
| Parameter | Details |
|---|---|
| tabel | Uw navigatietabel. |
| keyColumns | Lijst met kolomnamen die fungeren als de primaire sleutel voor uw navigatietabel. |
| nameColumn | De naam van de kolom die moet worden gebruikt als weergavenaam in de navigator. |
| Datacolumn | De naam van de kolom die de tabel of functie bevat die moet worden weergegeven. |
| itemKindColumn | De naam van de kolom die moet worden gebruikt om te bepalen welk type pictogram moet worden weergegeven. Zie hieronder voor de lijst met geldige waarden voor de kolom. |
| itemNameColumn | De naam van de kolom die moet worden gebruikt om het gedrag van de preview te bepalen. Dit is doorgaans ingesteld op dezelfde waarde als itemKind. |
| isLeafColumn | De naam van de kolom die wordt gebruikt om te bepalen of dit een leaf-knooppunt is of dat het knooppunt kan worden uitgebreid om een andere navigatietabel te bevatten. |
De functie voegt de volgende metagegevens toe aan het tabeltype:
| Veld | Parameter |
|---|---|
| NavigationTable.NameColumn | nameColumn |
| NavigationTable.DataColumn | Datacolumn |
| NavigationTable.ItemKindColumn | itemKindColumn |
| NavigationTable.IsLeafColumn | isLeafColumn |
| Preview.DelayColumn | itemNameColumn |
Waarden voor ItemKind
Elk van de volgende soort itemwaarden biedt een ander pictogram in de navigatietabel.
- Feed
- Kubus
- CubeDatabase
- Cubeview
- CubeViewFolder
- Database
- DatabaseServer
- Dimensie
- Tabel
- Map
- Functie
- Weergave
- Blad
- Subcube
- DefinedName
- Record
In de onderstaande afbeelding ziet u de pictogrammen voor itemsoorten in Power BI Desktop.

Voorbeelden
Platte navigatietabel
In het volgende codevoorbeeld wordt een platte navigatietabel met drie tabellen en een functie weergegeven.
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"}});
Deze code resulteert in de volgende Navigator-weergave in Power BI Desktop:

Navigatietabel op meerdere niveau
Het is mogelijk geneste navigatietabellen te gebruiken om een hiërarchische weergave van uw gegevensset te maken. U doet dit door de waarde voor die rij in te stellen op (dit markeert deze als een knooppunt dat kan worden uitgebreid) en de kolom op te maken als ook een IsLeaf false andere Data navigatietabel.
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;
Deze code resulteert in de volgende Navigator-weergave in Power BI Desktop:

Dynamische navigatietabellen
Complexere functionaliteit kan worden gebouwd op basis van deze basisbeginselen. Hoewel in alle bovenstaande voorbeelden in code gecodeerde entiteiten in de navigatietabel worden vermeld, is het eenvoudig om te zien hoe een navigatietabel dynamisch kan worden gegenereerd op basis van entiteiten die beschikbaar zijn voor een bepaalde gebruiker. Enkele belangrijke overwegingen voor dynamische navigatietabellen zijn:
- Foutafhandeling om een goede ervaring te garanderen voor gebruikers die geen toegang hebben tot bepaalde eindpunten.
- De evaluatie van knooppunt is standaard lui; leaf-knooppunten worden pas geëvalueerd als het bovenliggende knooppunt is uitvoed. Bepaalde implementaties van dynamische navigatietabellen op meerdere niveau kunnen resulteren in een gretige evaluatie van de hele structuur. Zorg ervoor dat u het aantal aanroepen bewaakt dat Power Query maakt, omdat de navigatietabel in eerste instantie wordt weergegeven. Is bijvoorbeeld
Table.InsertRows'lazier' dan , omdat het de argumentenTable.FromRecordsniet hoeft te evalueren.