[PowerBi] ¿Qué es TMDL?

Hace un tiempo que Microsoft ha anunciado TMDL. Puede que muchos se preguntaran qué es y porque aún no vemos cambios. La respuesta pasa porque es un concepto que estaba más de fondo, más en el código.

Hace tiempo que la comunidad de Power Bi traia algunos dolores no resueltos con desarrollos complejos. Pasando por el versionado y repositorio de código hasta la replicación de lógicas o formatos complejos. Este nuevo concepto puede ayudarnos.

Dado que a partir del último release de PowerBi Desktop vamos a poder visualizarlo en una vista propia, hemos decidido escribir este artículo para comprender de que se trata y porque es importante.

Vamos a comenzar como gusta hacer aqui en LaDataWeb con su definición de libro directa de Microsoft.

El lenguaje de definición de modelos tabulares (TMDL) es una sintaxis de definición del modelo de objetos para los modelos de datos tabulares en el nivel de compatibilidad 1200 o superior.

En palabras más simples es código. Un lenguaje que podemos disponibilizar para los modelos tabulares modernos. Ahora, ¿por que querriamos disponibilizarlo? por las razones antes mencionadas. Si tenemos activado el uso de este código, entonces podríamos resguardar mucho mejor un historial de versiones, resolver conflictos entre trabajos en paralelo en un repositorio; replicar conceptos, lógicas o formatos, etc.

¿Cómo se relaciona con PowerBi Desktop?

¿Recuerdan que hace un tiempo hablabamos de "Guardar como proyecto" a un archivo de Power Bi en este artículo? Bueno, ahi estabamos dando los primeros pasos para desagregar un pbix en archivos de código. En ese momento el formato por defecto no era muy amigable y tenía ciertos conflictos para interpretarlo o combinarlo en desarrollos concurrentes. Por esta razón se crea TMDL para facilitarnos la lectura, comprensión y uso.

Veamos su estructura que busca ayudarnos:

Lo primero es que podremos leer a un desarrollo de PowerBi en archivos de código. Antes de asustarnos sepamos que puede abrirse desde Power Bi Desktop como siempre o con VScode y una extensión TMDL.

A la izquierda en la imagen podemos apreciar la estructura de nuestro archivo de PowerBi desagregada. Dividida en reporte y modelo semántico. Así mismo detecta conceptos como cultura, perspectiva, roles o tablas. Todo materia de cosas que ya hemos visto en el mismo programa. Estos archivos de código estan por conceptos. Por ejemplo la imagen muestra un archivo de tabla. La estrcutura del archivo esta siempre bajo definiciones de la tabla como nombres, medidas o columnas a la izquierda y en un color y sus características o propiesdades con una sangría que ayuda a dividir a quien pertenece. Si quieren ver el detalle de las sentencias en fino pueden pasar por aqui: https://learn.microsoft.com/es-es/analysis-services/tmdl/tmdl-overview?view=asallproducts-allversions

¿De que nos sirve este código? ¿Puedo seguir desarrollando igual que siempre?

Lo cierto es que quien desarrolla puede seguir igual que siempre. La diferencia pasa por nuevas opciones. Un desarrollador interiorizado con esto, podrá copiar y replicar este código. Código que tiene propiedades, formatos, lógicas, visualizaciones configuradas, etc. Antes tal vez era imposible pensar en copiar valores de una visualización entre dos archivos de power bi, o pensar en copiar medidas, inclusive roles. Nos la pasabamos recreando en lugar de copiar. Imaginen si la comunidad comienza a compartir patrones de este código como por ejemplo convertir un gráfico de lineas en uno de puntos o de barras redondeadas como ya se ha visto en videos al alcance de un copiar y pegar.

Conflictos en equipo

Este concepto no solo pasa por la replicación y desarrollo basado en código. También añade una más simple solución al momento de tratar conflictos de código entre dos desarrollos. Ya habíamos mencionado en posts anteriores que guardar como proyecto ayudaba a que dos desarrolladores pudieran usar un repositorio, hacer pull del contenido, modificarlo y devolverlo al ambiente apropiado. Sin embargo, cuando dos de ellos manipulan conceptos similares aparece un conflicto. Por ejemplo, los dos modifican la misma medida o agregan medidas en la misma tabla. Con TMDL, podemos identiciar fácilmente la diferencia y hasta combinar los códigos para que convivan a diferencia de la modalidad antigua TMSL (basada en json). Con todo esto queremos aclarar el beneficio pero no queremos entrar en tanto detalle técnico de merges porque podríamos escribir varios artículos del tratamiento.

Primeros pasos

Para dar inicio y comenzar a estudiar este código, recomiendo leerlo sobre archivos de PowerBi con los que estén familiarizados. Lo primero será guardar nuestro PowerBi como proyecto. Luego tenemos dos métodos para ver el código.

1- Visual studio code extensión TMDL

Para quienes les gusten más las pantallas negras y vivir del código seguramente encontrar este espacio más familiar. Basta con instalar la extensió: https://marketplace.visualstudio.com/items?itemName=analysis-services.TMDL

2- Power Bi Desktop TMDL view

De momento está en preview, lo que significa que tenemos que activiarla en las opciones de Desktop. Una vez activada veríamos un nuevo icono a la izquierda. Solo con abrirlo y arrastrar un objeto a su canva podremos comenzar a ver el código:


Conclusión

Este tema va a revolucionar los desarrollos de la reportería. Tanto si nos sumamos a la ola como si no lo hacemos, indiscutiblemente es un concepto que va a dirrumpir el mercado con sus posibilidades de generar scripts para la comunidad de reutilización y trabajar en equipo comodamente. Como un beneficio adicional les comparto que si usamos código, podemos usar Github Copilot que ayudaría bastante en los desarrollos.