DAX es un excelente lenguaje de consulta, sin embargo, dentro de Power Bi Desktop, no siempre se siente como una consulta a los datos y eso puede ser confuso al construir complejas funciones que resuelvan lógicas y fórmulas.
Cuando estamos escribiendo muchas funciones anidadas en complejas matemáticas podemos llegar a resultados errados sin un error en nuestra sintaxis. Eso complica los resultados y es necesario encontrar la forma de debugear poco a poco lo que generamos. Este artículo nos mostrará alternativas para ello.
¿Qué es debuggear?
La palabra viene del inglés debug, y en palabras simples es un proceso que consiste en conocer resultados de cada porción de sentencia del código en tiempo de ejecución pausando el proceso en que está corriendo.
Lo cierto es que PowerBi Desktop no tiene una herramienta que nos permita esto, pero aun así podemos mantener la filosofía de conocer los resultados de porciones de ejecución de otras formas.
Variables
Las variables en DAX nos permiten muchas cosas. Ya hemos visto que, bien creadas, podemos hacer más eficiente el código, más legible y mantenible. Veamos un ejemplo sencillo. Existe una medida de proyección que tiene una fórmula matemática.

Si esta medida resultara en blank, fallos o números erróneos sería un buen momento para debuguear. Habíamos mencionado que no podemos hacerlo tal como la definición, pero si podemos analizar el proceso y tomar prácticas.
Lo que podemos hacer aquí es entender el resultado de cada variable, de esa forma podríamos ver el contexto en el que ejecutamos nuestro código y analizar que parte específica de nuestro código tiene el error y así entender mejor donde enfocarnos. Si no supiéramos esto estaríamos perdidos en nuestro código corriendo en círculos. Para ver el resultado de cada variable bastaría con comentar la última línea y dar RETURN de la variable.
EVALUATEANDLOG + Tool
Recientemente se ha hecho pública la nueva función que tiene el motor en su nueva versión de Power Bi Desktop.
Definición de Microsoft: Devuelve el valor del primer argumento y lo registra en un evento del generador de perfiles del registro de evaluación DAX. Esta función solo es totalmente funcional en Power BI Desktop. Actúa como una simple función de acceso directo en otros entornos.
EVALUATEANDLOG(<Value>, [Label], [MaxRows])
Esta nueva función nos permite hacer un registro del resultado de una expresión de DAX. Normalmente esto sería difícil de leer, pero hoy existen herramientas que nos permiten ver ese log de registros. Hablo de SQL Profiler y DAX Debug Output.
Dado que muchos podrían ya conocer Profiler por su experiencia en SQL voy a ejemplificar con DAX Debug Output, un tool de la comunidad para la comunidad.
La aplicación puede ser descargada de su repo de Github directamente. Aún está en pre release y seguramente veremos mucho más adelante.
Necesita de los siguientes requisitos para funcionar y si no los tienen le savisa y manda a descargar:
- Microsoft .NET Core 6.0
- Microsoft .NET 6.0 Desktop Runtime
Una vez abierto lo veremos así:

Luego es bastante simple, con abrirla junto a nuestro Power Bi Desktop veremos un "Connect" que nos deja seleccionar la instancia.
Por defecto la herramienta registra las ejecuciones de las consultas de cada visualización que tenemos en pantalla. Por ejemplo, veamos la siguiente imagen con dos visualizaciones, una tarjeta y un gráfico de lineas por meses. Veremos dos QueryBegin y dos QueryEnd que son eventos en el registro junto a la consulta que forma la visualización.

La nueva función es muy simple, basta con envolver el valor que queremos ver en EVALUATEANDLOG. Veamos el mismo código de antes agregando dos veces la función:

El primer parámetro y el único obligatorio es la expresión. El resultado que nos gustaría conocer de nuestro código lo envolvemos. Abrimos DAX Debug Output y buscamos el evento "DAXEvaluationLog".
La primera expresión es un resultado único puesto que independientemente de su contexto devolvería el resultado para todas las fechas a menos que la veamos por año (ALL EXCEPT).

Asi comprendemos un poco uno de los valores que corresponden a nuestro cálculo. Veamos el otro que es simple y afectado por contexto.

Siendo el valor de nuestra DAX un resultado distinto para cada contexto en nuestra página, el resultado registrado lo hace por cada mes dado el gráfico de lineas evolutivo.
De éste modo conocemos los resultados de las variables en cada aparición de su contexto ayudandonos a entender cuando un resultado puede estar mal.
Si la expresión final que vemos a continuación tira un blanco, número fallido o lo que fuera, podríamos determinar en que parte esta el error:
__cantidad_actual + ABS(__cantidad_actual - __prom_mensual)
Así concluimos las dos alternativas de ejecutar un debug de nuestro código DAX en Power Bi Desktop. Creo que es una excelente herramienta para quienes escriban código que no pueden perderse.