Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Таблицы навигации (или таблицы навигации) являются основной частью предоставления удобного интерфейса для соединителя. Интерфейс Power Query отображает их пользователю после ввода необходимых параметров для функции источника данных и проверки подлинности с помощью источника данных.
За кулисами таблица навигации — это просто обычное значение таблицы M с определенными полями метаданных, определенными в типе. Когда функция источника данных возвращает таблицу с этими полями, Power Query отобразит диалоговое окно навигатора. На самом деле базовые данные можно увидеть как значение таблицы, щелкнув правой кнопкой мыши корневой узел и выбрав "Изменить".
Table.ToNavigationTable
Функцию Table.ToNavigationTable можно использовать для добавления метаданных типа таблицы, необходимых для создания таблицы навигации.
Замечание
В настоящее время необходимо скопировать и вставить эту функцию в расширение M. В будущем она, скорее всего, будет перенесена в стандартную библиотеку M.
В следующей таблице описаны параметры для этой функции:
| Параметр | Сведения |
|---|---|
| table | Таблица навигации. |
| keyColumns | Список имен столбцов, которые служат первичным ключом для таблицы навигации. |
| nameColumn | Имя столбца, который должен использоваться в качестве отображаемого имени в навигаторе. |
| dataColumn | Имя столбца, содержащего отображаемую таблицу или функцию. |
| itemKindColumn | Имя столбца, используемого для определения типа отображаемого значка. Ниже приведен список допустимых значений для столбца. |
| itemNameColumn | Имя столбца, используемого для определения поведения предварительного просмотра. Обычно это значение имеет то же значение, что и itemKind. |
| isLeafColumn | Имя столбца, используемого для определения того, является ли это конечным узлом, или если узел можно развернуть, чтобы содержать другую таблицу навигации. |
Функция добавляет следующие метаданные в тип таблицы:
| Поле | Параметр |
|---|---|
| NavigationTable.NameColumn | nameColumn |
| НавигационнаяТаблица.СтолбецДанных | dataColumn |
| NavigationTable.ItemKindColumn | itemKindColumn |
| NavigationTable.IsLeafColumn | isLeafColumn |
| Preview.DelayColumn | itemNameColumn |
Значения для ItemKind
Каждое из следующих значений типа элемента предоставляет другой значок в таблице навигации.
- Кормить
- База данных
- Сервер базы данных
- Размерность
- Таблица
- Folder
- Функция
- View
- Таблица
- ОпределенноеИмя
- Запись
Примеры
Плоская таблица навигации
В следующем примере кода отображается плоская таблица навигации с тремя таблицами и функцией.
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"}});
Этот код приведет к отображению следующего навигатора в Power BI Desktop:
Таблица навигации с несколькими уровнями
Для создания иерархического представления над набором данных можно использовать вложенные таблицы навигации. Чтобы сделать это, установите для значения IsLeaf в этой строке false (что помечает её как узел, который можно развернуть), и отформатируйте столбец Data как еще одну таблицу навигации.
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;
Этот код приведет к отображению следующего навигатора в Power BI Desktop:
Динамические таблицы навигации
Более сложные функциональные возможности можно создать на основе этих основных принципов. Во всех приведенных выше примерах отображаются жестко закодированные сущности в таблице навигации, легко увидеть, как таблицу навигации можно создавать динамически на основе сущностей, доступных конкретному пользователю. Ниже приведены некоторые ключевые аспекты для таблиц динамической навигации:
- Обработка ошибок , чтобы обеспечить хороший интерфейс для пользователей, у которых нет доступа к определенным конечным точкам.
- Вычисление узла по умолчанию отложено; листовые узлы не вычисляются, пока родительский узел не будет развернут. Некоторые реализации динамических таблиц навигации на нескольких уровнях могут привести к активной оценке всего дерева. Не забудьте отслеживать количество вызовов, которые Выполняет Power Query, так как изначально отображает таблицу навигации. Например, Table.InsertRows является "ленивее", чем Table.FromRecords, так как не требуется оценивать его аргументы.