Al día de hoy PowerBi esta instaurado masivamente. Ya lo usan muchísimas empresas y la cantidad de modelos e informes deployados es enorme. Esto hace que los desafíos de hoy, ya no sean los de antes.
Antes había más concentración en la comunidad por aprender PowerBi tips, buscar como armar una característica puntual de experiencia de usuario. Esto se daba porque eran los primeros informes de muchas empresas. Hoy nos toca entender informes ya implementados por otras personas o empresas. ¿Cómo entender que hay detrás de un modelo semántico publicado? El nuevo update/release de la librería de Python, SimplePBI, para leer la PowerBi Rest API puede ayudarnos a obtener información de tablas, medidas, columnas y hasta roles que existen en el modelo.
Cuando necesitamos editar, dar soporte y comprender algún modelo semántico en producción. Puede ser un gran desafío si no contamos con las prácticas adecuadas de versionado. Si necesitamos entender rápidamente sobre un linaje fino (tabla) del origen y no tenemos un catálogo de gobernanza apropiado hay un inconveniente.
Para estas situaciones y muchísimas más, SimplePBI incorporó la posibilidad de preguntar fácilmente con código python por información de un modelo semántico. ¿Qué podemos consultar?
- Tablas: datos de las tablas del modelo.
- Medidas: todas las medidas del modelo, sus expresiones y a que tabla pertencen.
- Columns datos de las columnas del modelo y a que tabla pertenecen.
- Roles: datos de roles de RLS creados en el modelo.
Veamos que simple que es consultar el modelo.
Pre requisitos
Lo primero que necesitamos es conocer como se utiliza la PowerBi Rest API, para ello podes dar tus primeros pasos con este artículo. Lo segundo es asegurarnos que tenemos una versión 1.0.4 o superior de la librería:

Si ya tenian la librería pueden correr en consola:
pip install SimplePBI –upgrade
Obtener información del modelo
A partir de ese momento podremos consultar un modelo semántico o conjunto de datos de un área de trabajo puntual.
Autenticamos y generamos un token:

Creamos el objeto de la categoría que nos gustaría ejecutar. En este caso datasets hace referencia a modelos semánticos:
sem = semanticmodels.SemanticModels(t.token)
Aún siendo desarrollo propio de la librería, los métodos a ejecutar tienen nombre amigables muy similares a los que ya existían en la documentación de la API:
- list_roles_from_semantic_model
- list_tables_from_semantic_model
- get_tables_schema_from_semantic_model (info de columnas y medidas)
Podemos obtener el id de área de trabajo y del modelo semántico desde la URL del navegador cuando abrimos el modelo. Se ve así:
https://app.powerbi.com/groups/[Workspace ID]/datasets/[Dataset ID]/details?experience=power-bi
Así ejecutaríamos el pedido de medidas y columnas de una tabla para el área de trabajo ws en el modelo semántico ds:

Como podemos apreciar, es una simple línea que trae toda la información. Cada ítem de la lista de rows en el diccionario de respuesta tiene una medida o columna (se especifica en la columna type). En este caso, las primeras 5 filas muestran una columna de la tabla Cambiador_unidades y tres medidas y una columna de la tabla "Customer". Entre los datos de mayor interés vemos su nombre, tipo de datos para columnas y expresión para las desarrolladas con DAX.
NOTA: estos request son parte de operaciones de procesos largos, puede que no sea instantánea sino que demore unos segundos.
Espero que esto los ayude a investigar más sobre modelos deployados para aprender en caso de dar soporte, mejorar nuestras estructuras de catálogos o revisar rápidamente expresiones de medidas. El uso en definitiva tiene como límite su creatividad.