Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As tabelas de navegação (ou nav tables) são uma parte fundamental para proporcionar uma experiência amigável para o conector. A experiência Power Query mostra-os ao utilizador depois de este ter introduzido quaisquer parâmetros necessários para a função da sua fonte de dados e autenticado com a fonte de dados.
Nos bastidores, uma tabela de navegação é apenas um valor normal da Tabela M com campos de metadados específicos definidos no seu Tipo. Quando a função da sua fonte de dados devolve uma tabela com estes campos definidos, o Power Query irá mostrar o diálogo do navegador. Pode, na verdade, ver os dados subjacentes como um valor de tabela clicando com o botão direito no nó raiz e selecionando Editar.
Tabela.ParaNavegaçãoTabela
Pode usar a Table.ToNavigationTable função para adicionar os metadados do tipo de tabela necessários para criar uma tabela de navegação.
Observação
Atualmente precisa de copiar e colar esta função na sua extensão M. No futuro, provavelmente será transferido para a biblioteca padrão M.
A tabela seguinte descreve os parâmetros para esta função:
| Parâmetro | Detalhes |
|---|---|
| tabela | A tua tabela de navegação. |
| keyColumns | Lista de nomes de colunas que funcionam como a chave principal da sua tabela de navegação. |
| coluna nomeNome | O nome da coluna que deve ser usada como nome de exibição no navegador. |
| dataColumn | O nome da coluna que contém a Tabela ou Função a mostrar. |
| ColunaItemKindT | O nome da coluna a usar para determinar o tipo de ícone a exibir. Veja abaixo a lista de valores válidos para a coluna. |
| ColunaNomeItemNome | O nome da coluna a usar para determinar o comportamento de pré-visualização. Isto é normalmente definido com o mesmo valor que itemKind. |
| isLeafColumn | O nome da coluna é usado para determinar se este é um nó folha, ou se o nó pode ser expandido para conter outra tabela de navegação. |
A função adiciona os seguintes metadados ao tipo de tabela:
| Campo | Parâmetro |
|---|---|
| NavigationTable.NameColumn | coluna nomeNome |
| NavigationTable.DataColumn | dataColumn |
| TabelaDeNavegação.ColunaDeTipoDeItem | ColunaItemKindT |
| NavigationTable.IsLeafColumn | isLeafColumn |
| Pré-visualização.ColunaDeAtraso | ColunaNomeItemNome |
Valores para o ItemKind
Cada um dos seguintes valores de tipo de item apresenta um ícone diferente na tabela de navegação.
- Feed
- Base de dados
- Servidor de Base de Dados
- Dimensão
- Table
- Folder
- Função
- View
- Folha
- Nome Definido
- Gravar / Registo
Examples
Tabela de navegação plana
O exemplo de código seguinte apresenta uma tabela de navegação plana com três tabelas e uma função.
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"}});
Este código resultará na seguinte exibição do Navigator no Power BI Desktop:
Tabela de navegação multinível
É possível usar tabelas de navegação aninhadas para criar uma vista hierárquica sobre o seu conjunto de dados. Faz-se isto definindo o IsLeaf valor dessa linha para false (que a marca como um nó que pode ser expandido), e formatando a Data coluna para ser também outra tabela de navegação.
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;
Este código resultaria na seguinte exibição do Navigator no Power BI Desktop:
Tabelas de navegação dinâmica
Funcionalidades mais complexas podem ser construídas a partir destes fundamentos. Embora todos os exemplos acima mostrem entidades codificadas fixamente na tabela de navegação, é fácil perceber como uma tabela de navegação poderia ser gerada dinamicamente com base em entidades disponíveis para um dado utilizador. Algumas considerações chave para tabelas de navegação dinâmica incluem:
- Gestão de erros para garantir uma boa experiência para utilizadores que não têm acesso a certos endpoints.
- A avaliação de nós é preguiçosa por defeito; os nós folha não são avaliados até que o nó pai seja expandido. Certas implementações de tabelas dinâmicas de navegação multinível podem resultar numa avaliação entusiasta de toda a árvore. Certifique-se de monitorizar o número de chamadas que o Power Query está a fazer ao renderizar inicialmente a tabela de navegação. Por exemplo, o Table.InsertRows é 'mais preguiçoso' do que o Table.FromRecords, pois não precisa de avaliar os seus argumentos.