Gestione dello spostamento
Le tabelle di spostamento (o le tabelle di spostamento) sono una parte fondamentale di offrire un'esperienza intuitiva per il connettore. L'esperienza di Power Query li visualizza all'utente dopo aver immesso i parametri necessari per la funzione dell'origine dati e aver eseguito l'autenticazione con l'origine dati.
Dietro le quinte, una tabella di spostamento è solo un normale valore di tabella M con campi di metadati specifici definiti nel relativo tipo. Quando la funzione origine dati restituisce una tabella con questi campi definiti, Power Query visualizzerà la finestra di dialogo strumento di navigazione. È effettivamente possibile visualizzare i dati sottostanti come valore di tabella facendo clic con il pulsante destro del mouse sul nodo radice e scegliendo Modifica.
Table.ToNavigationTable
È possibile usare la Table.ToNavigationTable
funzione per aggiungere i metadati del tipo di tabella necessari per creare una tabella di spostamento.
Nota
È attualmente necessario copiare e incollare questa funzione nell'estensione M. In futuro sarà probabilmente spostato nella libreria standard M.
La tabella seguente descrive i parametri per questa funzione:
Parametro | Dettagli |
---|---|
table | Tabella di spostamento. |
Keycolumns | Elenco di nomi di colonna che fungono da chiave primaria per la tabella di spostamento. |
Namecolumn | Nome della colonna che deve essere utilizzata come nome visualizzato nello strumento di navigazione. |
Datacolumn | Nome della colonna contenente la tabella o la funzione da visualizzare. |
itemKindColumn | Nome della colonna da utilizzare per determinare il tipo di icona da visualizzare. Vedere di seguito per l'elenco di valori validi per la colonna. |
itemNameColumn | Nome della colonna da utilizzare per determinare il comportamento di anteprima. Questo valore viene in genere impostato sullo stesso valore di itemKind. |
isLeafColumn | Nome della colonna utilizzata per determinare se si tratta di un nodo foglia o se il nodo può essere espanso per contenere un'altra tabella di spostamento. |
La funzione aggiunge i metadati seguenti al tipo di tabella:
Campo | Parametro |
---|---|
NavigationTable.NameColumn | Namecolumn |
NavigationTable.DataColumn | Datacolumn |
NavigationTable.ItemKindColumn | itemKindColumn |
NavigationTable.IsLeafColumn | isLeafColumn |
Preview.DelayColumn | itemNameColumn |
Valori per ItemKind
Ognuno dei valori del tipo di elemento seguente fornisce un'icona diversa nella tabella di spostamento.
- Feed
- Database
- DatabaseServer
- Dimensione
- Tabella
- Cartella
- Funzione
- Visualizza
- Foglio
- DefinedName
- Registra
Esempi
Tabella di spostamento flat
Nell'esempio di codice seguente viene visualizzata una tabella di spostamento flat con tre tabelle e una funzione.
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"}});
Questo codice comporterà la visualizzazione dello strumento di navigazione seguente in Power BI Desktop:
Tabella di spostamento a più livelli
È possibile usare le tabelle di spostamento nidificate per creare una visualizzazione gerarchica sul set di dati. A tale scopo, impostare il IsLeaf
valore di tale riga su false
(che lo contrassegna come nodo che può essere espanso) e formattare la Data
colonna come un'altra tabella di spostamento.
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;
Questo codice comporterà la visualizzazione dello strumento di navigazione seguente in Power BI Desktop:
Tabelle di spostamento dinamiche
Le funzionalità più complesse possono essere create da queste nozioni di base. Anche se tutti gli esempi precedenti mostrano entità hardcoded nella tabella di spostamento, è facile vedere in che modo una tabella di spostamento può essere generata in modo dinamico in base alle entità disponibili per un determinato utente. Alcune considerazioni chiave per le tabelle di spostamento dinamiche includono:
- Gestione degli errori per garantire un'esperienza ottimale per gli utenti che non hanno accesso a determinati endpoint.
- La valutazione del nodo è differita per impostazione predefinita; I nodi foglia non vengono valutati finché il nodo padre non viene espanso. Alcune implementazioni di tabelle di spostamento dinamiche multilivello possono comportare una valutazione eager dell'intero albero. Assicurarsi di monitorare il numero di chiamate effettuate da Power Query durante il rendering iniziale della tabella di spostamento. Ad esempio, Table.InsertRows è "lazier" rispetto a Table.FromRecords, perché non è necessario valutarne gli argomenti.