INCENTRO 1 FEB 20242001-bewerkt WEBP
María Cue

María Cue

Delivery Manager

Volver atrás
Artículo

6 min de lectura

26 de abril de 2024

Por qué DAX es un infierno. Te ayudamos a salir por lo menos al purgatorio

El código Da BInci. Episodio #6

Si alguna vez te has enfrentado al desafío de trabajar con el lenguaje DAX en Power BI, es posible que hayas experimentado una sensación de frustración y confusión. Pero no te preocupes, estás lejos de ser el único. Muchos desarrolladores se han visto abrumados por la aparente complejidad de DAX y han llegado a considerarlo un auténtico infierno. En este artículo, exploraremos los desafíos más comunes que enfrentan los desarrolladores al trabajar con DAX, así como las claves para superarlos y aprovechar al máximo su potencial.

El lenguaje DAX, o Data Analysis Expressions, es un componente fundamental en el mundo de Power BI. En pocas palabras, es el lenguaje utilizado para formular expresiones y calcular valores en tablas de datos. Con DAX, los usuarios pueden crear medidas, columnas calculadas y tablas calculadas, lo que permite un análisis avanzado y personalizado de los datos.

Desafíos de DAX: ¿Por qué puede sentirse como un verdadero infierno?

Paradigma funcional vs. imperativo

Uno de los principales desafíos al enfrentarse a DAX radica en la diferencia entre un enfoque funcional y uno imperativo. Mientras que la mayoría de la gente está acostumbrada a lenguajes de programación imperativos, como SQL o JAVA, DAX se basa en un paradigma funcional. Esta discrepancia en la forma de pensar y abordar los problemas puede resultar desconcertante al principio, especialmente para aquellos que están más familiarizados con enfoques imperativos.

DAX cuenta con alrededor de 250 funciones en total. Estas funciones cubren una amplia gama de operaciones, incluyendo funciones matemáticas, funciones estadísticas, funciones de fecha y hora, funciones de texto, funciones de búsqueda y referencia, funciones de conversión de datos, entre otras. La variedad de funciones disponibles proporciona a los usuarios una gran flexibilidad para realizar análisis complejos y avanzados en sus datos.

Supongamos que queremos calcular una métrica llamada "Métrica" que utiliza varias funciones diferentes en su definición:

Métrica = Función A(Función B, Función C(Función D))

DAX primero evaluará la función más interna, que en este caso es Función D. Una vez que se ha evaluado Función D, su resultado se pasa como argumento a Función C. Ésta realiza cálculos adicionales o manipulaciones en el antes de devolver su propio resultado. Después de evaluar Función C, su resultado se pasa como argumento a Función B. La Función B realiza cálculos adicionales y devuelve su propio resultado. Finalmente, el resultado de Función B se utiliza como argumento para Función A y ésta última realiza cálculos finales y se establece como el valor de la métrica Métrica.

Falta de método prueba-error efectivo

A diferencia de otros lenguajes donde los desarrolladores pueden experimentar con el código y ver los resultados inmediatamente, DAX requiere un enfoque más cuidadoso y planificado. Pequeños errores pueden tener grandes repercusiones en los cálculos, lo que dificulta la depuración y el proceso de aprendizaje. Esta falta de método de prueba y error efectivo puede resultar frustrante para aquellos que están acostumbrados a un enfoque más iterativo en el desarrollo de software.

Multiplicidad de funciones y métodos de cálculo

Otro desafío significativo al trabajar con DAX es la multiplicidad de funciones y métodos de cálculo disponibles. Una misma métrica puede ser calculada de múltiples maneras utilizando distintas funciones DAX, lo que puede generar confusión y dificultar la estandarización de los cálculos. Esto requiere un profundo conocimiento de las funciones disponibles y la capacidad de seleccionar la más adecuada para cada situación, lo cual puede resultar abrumador para los nuevos usuarios.

Consumo de recursos y rendimiento

El rendimiento y el consumo de recursos son preocupaciones importantes al trabajar con DAX. Las métricas complejas y las operaciones de cálculo intensivo pueden impactar significativamente en el rendimiento de los informes y en la capacidad de respuesta de la aplicación. Esto puede resultar en tiempos de carga prolongados, dificultades en la interactividad de los informes y problemas de escalabilidad. Optimizar las expresiones DAX para minimizar el uso de recursos y garantizar un rendimiento óptimo puede ser un desafío en sí mismo, especialmente en conjuntos de datos grandes o en entornos de alta concurrencia.

Conceptos fundamentales y contextos

Entender los conceptos fundamentales de DAX, como el contexto de filtros, contexto de fila y transición de contextos, puede resultar desafiante para los nuevos usuarios. Estos conceptos son cruciales para comprender cómo se aplican las expresiones DAX en diferentes situaciones y cómo se calculan los resultados en función del contexto de los datos. La falta de comprensión de estos conceptos puede llevar a errores en los cálculos y a resultados inesperados en los informes, lo que dificulta el proceso de desarrollo y depuración.

Dificultad para leer DAX

A pesar de su potencia y flexibilidad, el lenguaje DAX puede resultar difícil de leer y comprender para los desarrolladores, especialmente en expresiones largas y complejas. La naturaleza funcional de DAX, junto con la anidación de funciones y la falta de comentarios en las fórmulas, puede dificultar la comprensión de lo que está sucediendo en una expresión, especialmente para aquellos que no están familiarizados con su sintaxis y estructura.

Para abordar este desafío y mejorar la legibilidad y mantenibilidad del código DAX, se han introducido plantillas denominadas variables. Éstas permiten asignar valores a expresiones o cálculos específicos y luego utilizar esos valores en otras partes de la fórmula.

  • Mejora la Legibilidad: Al asignar nombres descriptivos a los valores calculados y utilizarlos en lugar de repetir fórmulas complejas, las variables hacen que las expresiones DAX sean más fáciles de entender y seguir, tanto para el desarrollador que las escribe como para otros que puedan revisar o mantener el código en el futuro.
  • Facilita el Mantenimiento: Al definir valores calculados una vez y luego referenciarlos con un nombre descriptivo en toda la fórmula, las variables hacen que sea más fácil realizar cambios o ajustes en los cálculos sin tener que modificar múltiples instancias de la misma fórmula.
  • Optimiza el Rendimiento: En algunas situaciones, el uso de variables puede mejorar el rendimiento del modelo de datos al reducir la necesidad de repetir cálculos complejos en toda la fórmula. Al calcular el valor una vez y luego referenciarlo con una variable, se evita la repetición de cálculos innecesarios.

En futuras publicaciones, profundizaremos en conceptos, como los contextos, las funciones avanzadas y las estrategias de optimización.

¿Estás listo para llevar tus habilidades de análisis de datos al siguiente nivel? ¡Entonces suscríbete para recibir actualizaciones y no te pierdas nuestras futuras publicaciones! Mantente al día con las últimas tendencias y técnicas en análisis de datos y descubre cómo puedes utilizar DAX para desbloquear ideas poderosas y tomar decisiones más informadas.


El código Da BInci. Episodio #5: ¿Qué herramienta BI deberías escoger para tu universo empresarial?

El código Da BInci. Episodio #7: Estrategias y métricas clave para impulsar el éxito de tu ecommerce

María Cue

¿Quieres saber más?

María Cue

Delivery Manager