Azure DevOps para tus desarrollos de Power BI (IX). Pipeline de buenas prácticas del modelo semántico.

Mar Lizana
6 min readApr 9, 2024

--

¡Bienvenidas una semana más! En esta serie de artículos pretendemos que te introduzcas en el mundo de Azure DevOps, que será nuestro principal aliado en esta aventura. La semana pasada cerramos el bloque de las tres pipelines relacionadas con el thin report. Arrancamos con el último bloque, el del modelo semántico. Esta semana veremos como automatizar tests de buenas prácticas para esta parte de nuestro desarrollo.

Como son varios temas no queremos dejarte sin aliento, hemos preferido separarlos en artículos independientes. Nuestra intención es entregarte uno nuevo cada martes (o cada vez que podamos).

1. Introducción

2. ¿Qué es eso de DevOps?

3. Herramientas que vamos a usar

4. Qué podemos encontrar en Azure DevOps

5. Qué necesito para que esto funcione

6. Pipeline para descomprimir el report

7. Pipeline para las buenas prácticas del report

8. Pipeline de despliegue del report

9. Pipeline de buenas prácticas del modelo semántico ← ESTAMOS AQUÍ

10. Pipeline de despliegue del modelo semántico

11. Conclusiones

Esta serie de artículos los hemos escrito conjuntamente Adrià Belmonte y una servidora y son la fusión de unir a un arquitecto cloud con una ingeniera de datos.

¡Cualquier duda o propuesta de mejora no dudes en dejárnoslo en comentarios!

¡¡Con café en mano, continuamos!!

¿Qué vamos a necesitar?

Crear una pipeline

Lo primero, necesitaremos una nueva pipeline. Esta vez la crearemos en el repositorio de nuestro modelo semántico.

Hace unas semanas, con nuestra primera pipeline, vimos como se creaba. Te dejamos el enlace por aquí para que puedas revisarlo si lo necesitas.

JSON de buenas prácticas

Necesitaremos guardar el JSON con las buenas prácticas en la carpeta a la que luego apuntaremos en nuestra pipe:
\pipelines\config\BPArules.json

Puedes descargar el archivo en el mismo repositorio de Tabular Editor. Al tratarse de un archivo JSON podremos modificarlo para adaptarlo a nuestras necesidades.

Las reglas de buenas prácticas se pueden ejecutar directamente en Tabular Editor. En la propia documentación te explican como. Para que puedas revisar tu desarrollo antes de hacer la PR :)

Archivo BIM con el modelo semántico

Tienes varias forma de conseguir este archivo que incluye los metadatos de tu modelo:

  • Si desarrollas tu modelo desde Tabular Editor puedes exportar a BIM directamente.
  • Si desarrollas desde Power BI Desktop puedes guardar como PBIP y en la carpeta de dataset encontrarás este archivo.

Veamos la pipeline en detalle

Para nuestro modelo semántico solo necesitaremos dos pipelines:

  • CI-Scan ← ESTAMOS AQUÍ :)
  • CD-Deployment

Como hemos comentado, esta primera pipeline se centrará en el análisis de buenas prácticas de nuestro dataset. Está pipeline es similar a la que tenemos en nuestro report pero basado en la herramienta Tabular Editor.

Como siempre, te dejamos el enlace al repositorio donde la vas a poder encontrar y te recomendamos que antes de copiar y pegar te tomes un momento para entender que hace cada bloque de código.

¡¡Vamos!!

  1. Tenemos el trigger deshabilitado para que no ejecuta la pipeline de forma automática.

Recordad que lo que queremos es que se ejecute cuando hagamos un pull-request. Vimos como configurar esta opción en el artículo de las buenas prácticas del report.

2. Utilizaremos el pool de agentes públicos de ADO de Windows

3. Las variables que utilizaremos en nuestra pipeline. En este caso le indicaremos de donde puede descargar Tabular Editor, nuestro .bim dónde se ubica y el path dónde tenemos el JSON de buenas prácticas.

  1. Procedemos a descargarnos la herramienta para analizar el modelo semántico.
  2. Ejecutamos la herramienta utilizando las BPARules. Veréis que el último punto de inputs, script, tiene una serie de letras precedidas de un guion, os explicamos que hace cada una:
  • -O (Sobrescribir): Esta opción permite reemplazar una base de datos existente si es necesario.
  • -C (Conexiones): Al utilizar esta opción, se actualizarán o crearán conexiones con fuentes de datos que ya están en el modelo.
  • -P (Particiones): Esta opción se usa para actualizar o crear particiones de tabla que ya existen en el modelo.
  • -V (VSTS): Si esta opción se activa, los comandos de registro se enviarán a Visual Studio Team Services. Si se usa este parámetro, el nivel de gravedad de cada regla determinará cómo se notifica cualquier infracción de la regla al proceso de compilación. Es decir, te permitirá controlar cómo se gestionan los errores durante el proceso de compilación.
  • -E (Error): Al activar esta opción, el proceso devolverá un código de salida diferente de cero si Analysis Services emite algún mensaje de error después de desplegar o actualizar los metadatos.
  • -W (Advertencia): Esta opción mostrará información sobre objetos que no se han procesado correctamente como advertencias.
  • -T (TRX): Al usar esta opción, se generará un archivo VSTEST (trx) que contendrá detalles sobre la ejecución del proceso.
  1. Publicaremos el informe generado en modo Artifact en nuestra pipeline.

Los artifacts son objetos que pueden ser consumidos por otros procesos. Esta acción nos permite disponer del informe en formato XML y poder descargarlo.

2. Publicaremos el informe generado en modo Publish en nuestra pipeline. Con esta acción publicamos nuestro informe generado en el paso anterior para poder visualizarlo de forma directa.

En nuestra pipeline, encontraremos una pestaña con nombre de Tests, donde tendremos el informe generado subido en está parte del pipeline.

En el informe podremos ver el total de tests ejecutados, así como lo que hemos hecho bien y lo que no. En la parte inferior veremos en detalle todas las cosas que deberemos corregir antes de pasar nuestros cambios a la rama principal.

Decirle a la pipeline que se ejecute con una pull-request

Ahora tocaría configurar la pipeline para que se ejecute con la pull-request, para no repetirnos, te volvemos a dejar el enlace dónde lo tienes explicado paso a paso.

¿Qué veremos la próxima semana?

La próxima semana veremos como está construida la pipeline encargada de desplegar de forma automática nuestro modelo semántico al servicio de Power BI. Y con ese artículo cerraremos el apartado de pipelines :_) Nos acercamos al final.

Por si nos lees desde Barcelona y te apetece ponernos cara, el miércoles 17 de Abril estaremos en la Global Azure. ¡Ven a decirnos hola!

--

--

Mar Lizana

Data & Analytics Lead Engineer @NTT Data | Microsoft Data Platform MVP