ChatGPT esta causando un impacto enorme en el mundo de IA. Hay muchos ejemplos que muestran como puede ejecutar código. Sin embargo, el mejor que vi hasta el momento para por documentación.
La cuestión con la documentación es que no solo los desarrolladores detestan hacerla, sino también que se olviden o ni intentan. Entonces tener una forma de que se genere automáticamente es una feature que estoy seguro se usaría mucho más.
Desde el inicio del post voy a comenzar aclarando que ninguna inteligencia artificial será capas de dar una mejor descripción que el desarrollador del código DAX. Por ello se recomienda leer lo que genera la IA para controlar que esté todo en orden. Sería como validar documentación generado por alguien más.
Para poder trabajar con esta solución vamos a necesitar dos cosas
- Tabular Editor 2 o 3
- Cuenta en https://platform.openai.com/
Para construir esto vamos a usar un Script en C# que correrá sobre Tabular Editor. Ese script llamará a la API de OpenAI preguntandole a la inteligencia artificial por una descripción breve del cálculo de la medida en DAX.
Empecemos generando una KEY para poder usar la API de OpenAI. Vamos al menú de arriba a la derecha y clickeamos en View API Keys:

En la pantalla que se abre tocamos el botón "Create new secret key". Eso abrirá una ventana emergente con una clave enorme. Este es el momento de copiarla porque no va a mostrarla de nuevo. Si no la copian ahi, se perderá y tendrán que generar otra.
Con esa key vamos a poder continuar con el script que podrán encontrarlo en mi Github. El script fue creado por Darren Gosbell y publicado en este artículo. Sin embargo, subí una copia modificada con dos cambios:
- Posibilidad de correr en más de 20 medidas
- Generación de la descripción en español
Tengan en cuenta que la API tiene una limitación que solo permite 20 requests por minuto. Eso significa que el tiempo estimado de ejecución será de 1 minuto cada 20 medidas. Luego se incorporó un "in Spanish" al pedido del bot para que nos genere en español el contenido, pero si quieren que siga en ingles, pueden borrarlo.
Abrímos nuestro PowerBi Desktop. Vamos a External Tools y abrimos Tabular Editor. Nos dirigimos a la pestaña (tab) "C# Scripts" donde se ingresa el código que vamos a copiar, pero antes de pegarlo ejecutamos la siguiente línea:
Model.AllMeasures.Count().Output();
Esta sentencia devuelve el total de medidas en nuestro modelo. Si dividimos ese número en 20 tendremos el tiempo estimado en minutos que tardará en correr nuestro script. Muy importante tenerlo en cuenta porque al ejecutar, y demorar, siempre da la sensación que se congeló todo cuando en realidad sigue corriendo.
Luego de tener una idea del tiempo promedio pegamos nuestro código:

Reemplazamos la constante apiKey por la key generada para nuestro usuario de OpenAI y le damos play para ejecutarlo. Consideren que el script, por defecto, va a generar descripción para todas las medidas sin importar si ya tenían algo escrito. Va a pisar cualquier descripción existente.
Sino queremos que esto ocurra fijense que tiene un condicional comentado que pregunta por vacío. Si descomentamos la linea del if y el cierre de su llave correspondiente, entonces solo agregará descripción a medidas que no tengan esa propiedad manteniendo las que ya tenían.

Un ejemplo de descripción generada:

Antes de pensar que todo ha terminado vamos a guardar esto en nuestro modelo tabular de Power Bi Desktop y controlar que las descripciones tengan sentido. No podemos dejar de revisarlo. Tal como si lo hubiera hecho otro desarrollador y nosotros fueramos responsables del modelo, debemos revisar la documentación generada.
Para facilitar ese proceso podemos usar otra external tool llamada Model Documenter tal como lo indiqué en un antiguo post.
Espero que esto ayude a seguir documentando y teniendo el ejercicio de tener una descripción para las medidas.