Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las tablas de navegación (o tablas de navegación) son una parte fundamental de proporcionar una experiencia de usuario amigable para su conector. La experiencia de Power Query se muestra al usuario después de que haya ingresado todos los parámetros necesarios para la función de origen de datos y se haya autenticado con el origen de datos.
En segundo plano, una tabla de navegación es simplemente un valor de tabla M normal con campos de metadatos específicos definidos en su tipo. Cuando la función de origen de datos devuelve una tabla con estos campos definidos, Power Query mostrará el cuadro de diálogo del navegador. En realidad, puede ver los datos subyacentes como un valor de tabla haciendo clic con el botón derecho en el nodo raíz y seleccionando Editar.
Table.ToNavigationTable
Puede usar la Table.ToNavigationTable función para agregar los metadatos de tipo de tabla necesarios para crear una tabla de navegación.
Nota:
Actualmente, debe copiar y pegar esta función en la extensión M. En el futuro, es probable que se mueva a la biblioteca estándar de M.
En la tabla siguiente se describen los parámetros de esta función:
| Parámetro | Detalles |
|---|---|
| table | La tabla de navegación. |
| keyColumns | Lista de nombres de columna que actúan como clave principal para la tabla de navegación. |
| nameColumn | Nombre de la columna que se debe usar como nombre para mostrar en el navegador. |
| dataColumn | Nombre de la columna que contiene la tabla o función que se va a mostrar. |
| itemKindColumn | Nombre de la columna que se va a usar para determinar el tipo de icono que se va a mostrar. Consulte a continuación la lista de valores válidos para la columna. |
| itemNameColumn | Nombre de la columna que se va a usar para determinar el comportamiento de la vista previa. Normalmente, se establece en el mismo valor que itemKind. |
| isLeafColumn | Nombre de la columna utilizada para determinar si se trata de un nodo hoja o si el nodo se puede expandir para contener otra tabla de navegación. |
La función agrega los metadatos siguientes al tipo de tabla:
| Campo | Parámetro |
|---|---|
| TablaDeNavegación.ColumnaNombre | nameColumn |
| NavigationTable.DataColumn | dataColumn |
| TablaNavegación.ColumnaTipoElemento | itemKindColumn |
| NavigationTable.IsLeafColumn | isLeafColumn |
| Vista previa.ColumnaDeRetraso | itemNameColumn |
Valores de ItemKind
Cada uno de los siguientes valores de tipo de elemento proporciona un icono diferente en la tabla de navegación.
- Fuente
- Base de datos
- Servidor de Base de Datos
- Dimensión
- Table
- Carpeta
- Función
- Ver
- Sheet
- NombreDefinido
- Registro
Examples
Tabla de navegación plana
En el ejemplo de código siguiente se muestra una tabla de navegación plana con tres tablas y una función.
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 dará como resultado la siguiente presentación del navegador en Power BI Desktop:
Tabla de navegación de varios niveles
Es posible usar tablas de navegación anidadas para crear una vista jerárquica sobre el conjunto de datos. Para ello, establezca el valor de esa fila en IsLeaffalse (que lo marca como un nodo que se puede expandir) y dé formato a la columna Data para que también se configure como otra tabla de navegación.
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 daría lugar a la siguiente visualización del navegador en Power BI Desktop:
Tablas de navegación dinámica
Se puede crear una funcionalidad más compleja a partir de estos conceptos básicos. Aunque todos los ejemplos anteriores muestran entidades codificadas de forma rígida en la tabla de navegación, es fácil ver cómo se podría generar una tabla de navegación dinámicamente en función de las entidades que están disponibles para un usuario determinado. Algunas consideraciones clave para las tablas de navegación dinámica son:
- Control de errores para garantizar una buena experiencia para los usuarios que no tienen acceso a determinados puntos de conexión.
- La evaluación del nodo es perezosa por defecto; los nodos hoja no se evalúan hasta que se expanda el nodo padre. Algunas implementaciones de tablas de navegación dinámica de varios niveles pueden dar lugar a una evaluación diligente de todo el árbol. Asegúrese de monitorear el número de llamadas que realiza Power Query cuando inicialmente muestra la tabla de navegación. Por ejemplo, Table.InsertRows es "lazier" que Table.FromRecords, ya que no es necesario evaluar sus argumentos.