[SimplePBI] Documentar modelo semantico automáticamente

A medida que más modelos y reportes se construyen se vuelve más crítica la necesidad de tener documentos que ayuden a la interpretación de los mismos. La popularidad de la herramienta ya lleva muchos años de desarrollo y todos los días nuevos desarrolladores deben modificar o dar soporte a modelos que no construyeron.

Tanto por soporte, interpretación, mantenimiento y mucho más, se vuelve indispensable documentar lo que sucedió en el modelo semántico para que otros puedan seguir el hilo de nuestro trabajo. En este artículo veremos como podemos ejecutar una sentencia en python usando SimplePBI para exportar un documento html de un informe publicado en Power Bi Service.

Documentar es una de las tareas más odiadas por desarrolladores de múltiples industrias. Aunque a la mayoría no le guste es innegable que tiene beneficios. Uno de mis favoritos es mejorar la colaboración entre equipos. Imaginen que bueno sería dar soporte a una medida que tenga una buena Descripción o sus varias líneas de código con comentarios. Seguramente, la experiencia de modificar una así a 20 lineas sin especificar reduciría el tiempo de respuesta para resolverlo.

NOTA: Antes existían dos modos que fueron deprecados porque la PowerBi Rest API limitó sus opciones. Ahora solo existe un solo método d.create_doc_by_table_semantic_model_in_group que esta en preview.

Pre-requisitos

Para poder utilizar esta herramienta es necesario contar con acceso a la Power Bi Rest API. Podes leer como dar tus primeros pasos aqui.

Limitaciones

Este método está basado en ejecuciones de consultas contra el modelo semántico. Si utilizamos un Service Principal para realizar este documento, no es posible ejecutar consultas contra un modelo semántico que tenga conexión direct lake o direct query. El método está en desarrollo tratando de reducir las operaciones pesadas, si sucede una falla sin mensaje de error, intente generarlo de nuevo.

Creación del documento

Veamos que simple que es exportar un documento html que lea un informe de un modelo semantico en el servicio de power bi. Para mejor experiencia de usuario, hemos desarrollado lo más automático posible al documento.

La ejecución es bastante simple. Buscamos en nuestra interfaz el modelo semántico que queremos analizar y lo abrimos. Esto lo hacemos para poder extraer el id del área de trabajo y del modelo semántico de la URL

Doc por contenido

Como ya aclaramos muchas veces para iniciar la librería importamos los módulos que nos interesan y autenticamos un token para ejecutar los requests.

from simplepbi import token
from simplepbi import datasets
# Variables de autenticación
TENANT_ID = "xxxx-xxxx-xxxx-xxxx"
power_bi_client_id = 'xxxx-xxxx-xxxx-xxxx'
power_bi_secret = 'xxxx-xxxx-xxxx-xxxx'
workspace_id = 'xxxx-xxxx-xxxx-xxxx'
dataset_id = 'xxxx-xxxx-xxxx-xxxx'
# Creación de objetos con requests y token
t = token.Token(TENANT_ID, power_bi_client_id, None, None, power_bi_secret, use_service_principal=True)
d = datasets.Datasets(t.token)

Como podemos apreciar en la siguiente imagen, el nuevo método los datos que nos piden son del workspace y dataset id.

Fíjense que podemos elegir si queremos exportar el documento a un path local o pedir la respuesta en una cadena de texto "string" que podríamos copiar y pegar en un archivo vacío y crear el html nosotros. Esto porque dependerá de donde estemos ejecutando el código. Por ejemplo:

d.create_doc_by_table_semantic_model_in_group(workspace_id, dataset_id, "file", r"C:\Users\IBARRAU\Documents\css templates\doc_by_table.html")

Este documento añade las definiciones de consultas de Power Query escondidas en un elemento html que colapsa el código para que no sea tan largo. Esta construido mostrando el diagrama de tablas seguido tabla por tabla. Cada tabla muestra la definición de su consulta, las columnas y sus medidas (en caso de tenerlas).

El documento podemos encontrarlo en mi repositorio de GitHub en caso que quieran leerlo con detalle. Si quieres conocer más de SimplePBI, su repositorio y documentación esta en GitHub.

Así concluimos las exportaciones automáticas que pueden ayudarnos con los detalles de un modelo para tenerlos cerca si necesitamos conocer detalles de un modelo desplegado en el servicio de Power Bi.