Desentraña cómo el parámetro Restablecer permite reiniciar cálculos en niveles específicos dentro de la jerarquía de campos. Aquí lo exploramos a fondo.
En este artículo y vídeo profundizamos en el parámetro Restablecer en Lenguaje DAX, una opción clave para elevar tus cálculos visuales. Este parámetro no solo trasciende los de los cálculos a nivel de informe, sino que también se integra de manera única con los cálculos a nivel de modelo semántico, por ejemplo, con las funciones de ventana. Acompáñanos en este artículo y video donde desvelamos cómo Restablecer puede transformar tus análisis en Power BI.
Sobre Restablecer en Lenguaje DAX y Dirección
Restablecer en el Lenguaje DAX, también conocido como RESET en inglés, es un concepto clave para incrementar la flexibilidad en los cálculos visuales dentro de este lenguaje. De hecho, el acto de restablecer es parte de un concepto más amplio: La Dirección en el Lenguaje DAX.
La dirección en los cálculos visuales dentro del Lenguaje DAX se refiere a definir la ruta que el cálculo seguirá a través de la matriz visual para determinar el valor resultante. Esto involucra la combinación del Eje y el Restablecer.
Dirección = Eje + Restablecer
Exploramos las opciones de Eje (Axis) en el primer video sobre Cálculos Visuales en el Lenguaje DAX que publicamos, el cual puedes estudiar aquí.
¿Qué es Restablecer en Lenguaje DAX?
El restablecimiento nos permite seguir el patrón de movimiento dictado por el Eje (Axis), pero con la capacidad de reiniciar el cálculo en puntos específicos, es decir, cada vez que ocurre una transición de ciertos valores. Por ejemplo, en el Gif representamos conceptualmente la idea de restablecer; con cada cambio de color en la flecha se ilustra que el cálculo se resetea, que en particular sería acumulado desde el principio del trimestre:
Enumeraciones para Restablecer
Disponemos de tres opciones específicas para configurar el reinicio del cálculo, que son: HIGHESTPARENT, LOWESTPARENT, y NONE. Para comprender estas opciones de la mejor manera posible, consideremos la siguiente imagen.
Esta ilustración muestra la jerarquía de campos: Año > Trimestre > Mes > Día.
- HIGHESTPARENT: Esta opción restablece el cálculo al nivel más alto de la jerarquía, en nuestro ejemplo sería al nivel de Año.
- LOWESTPARENT: Con esta configuración, el restablece se efectúa al nivel más bajo disponible antes de llegar al detalle final, que en el ejemplo sería Mes.
- NONE: Al elegir esta opción, no se realiza ningún restablece en la jerarquía, permitiendo que el cálculo continúe sin interrupciones a través de todos los niveles. Puede verse también como aplicar el cambio en detalles más fino, lo cual no genera restablecimiento.
Highestparent
Si nuestro objetivo es obtener un acumulado que comience desde el inicio de cada año, es decir, que se reinicie con cada cambio de año, deberíamos configurar nuestro cálculo para utilizar la opción HIGHESTPARENT, una forma de escribir la expresión para el cálculo visual, sería:
1 | YTD Ingresos =2 | RUNNINGSUM ( [Ingresos], , , HIGHESTPARENT )
El resultado hace palpable el acumulado desde el principio del año:
La razón por la que hemos dejado tres comas (,) seguidas sin nada en el intermedio, lo cual puede parecer inusual a primera vista, es porque estamos utilizando los valores por defecto para los parámetros intermedios hasta llegar al parámetro de Restablecer en Lenguaje DAX. Para entender mejor este enfoque, recordemos la sintaxis de la función RUNNINGSUM, la cual es:
1 | RUNNINGSUM ( <Expresion>, [Eje], [Espacios en Blanco], [Restablecer] )
Como podemos observar en la sintaxis de la función RUNNINGSUM, el parámetro Restablecer se encuentra en la cuarta posición. Este diseño explica por qué colocamos comas sucesivas para avanzar hasta el parámetro deseado, lo cual se hace así porque estamos empleando los valores por defecto para los parámetros anteriores (Eje y Espacios en Blanco). Sin embargo, si necesitáramos especificar un valor diferente a las opciones por defecto de esos parámetro Restablecer, lo podemos hacer sin mayor problema, una expresión de ejemplo se vería algo así:
1 | AcumZigZagFirstHiPa =2 | RUNNINGSUM ( 3 | [Ingresos], 4 | ROWS COLUMNS, 5 | FIRST, 6 | HIGHESTPARENT 7 | )
Sintaxis Acortada
Sin embargo, en el Lenguaje DAX, es posible acceder directamente al parámetro Restablecer sin tener que poner las comas (,) intermedias para alcanzar el parámetro Restablecer, por ejemplo, el Acunado desde el principio del año (YTD Ingresos) se puede escribir tan sólo así:
1 | AcumShort=2 | RUNNINGSUM ( [Ingresos], HIGHESTPARENT )
Lowestparent
Realizar el acumulado desde el inicio del Mes, es decir, que se reinicie con cada cambio de Mes, es sencillo si utilizamos la opción LOWESTPARENT. Esto se logra de la siguiente manera:
1 | MTD Ingresos =2 | RUNNINGSUM ( [Ingresos], LOWESTPARENT)
El resultado se vería así:
Pero …
¿Qué sucede si necesitamos calcular el acumulado desde el inicio del trimestre?
En la jerarquía de campos establecida para los ejemplos que estamos siguiendo, no existe una opción en al enumeración específicamente para este propósito, como podría ser un “SECONDHIGHESTPARENT” o algo similar. Entonces, ¿qué podemos hacer en estos casos?
Restablecer en Lenguaje DAX en Nivel N-Ésimo
Resulta que el parámetro Restablecer en el Lenguaje DAX ofrece más opciones que las simples enumeraciones. De hecho, la realidad de este parámetro es que acepta un número entero.
El parámetro Restablecer (RESET) permite introducir un número entero, positivo o negativo, para indicar por posición del campo que se desea referenciar al reiniciar el cálculo. De esta manera, cuando el valor de dicho campo cambie, el cálculo se restablecerá.
El valor puede ser positivo, tomando el número 1 para el campo más alto en la jerarquía de campos, correspondiente a HIGHESTPARENT. El número 2 indicaría el segundo nivel o el segundo campo más alto en la jerarquía, y así sucesivamente.
El valor también puede ser negativo, donde -1 representa el campo más bajo en la jerarquía de campos, equivalente a LOWESTERPARENT. Por tanto, -2 indicaría el segundo campo más “pequeño” en la jerarquía, y así sucesivamente.
El número 0 representa el campo base en la jerarquía de campos, que se utiliza para reiniciar el cálculo, equivalente NONE.
Aquí hay una tabla para resumir las enumeraciones y sus valores enteros correspondientes:
Detente un momento para ver y analizar a profundidad la siguiente imagen para interiorizar el parámetro Restablecer en el lenguaje DAX, con números enteros positivos y negativos.
Por lo tanto, realizar un acumulado desde el principio del trimestre sería algo tan sencillo como:
1 | QTD Ingresos =2 | RUNNINGSUM ( [Ingresos], 2 )
El resultado se ve así:
Esto nos permite ver cómo realizar acumulados, incluso desde el principio de semestre, cuatrimestres, quincenas, etc., de manera extremadamente sencillo con cálculos visuales en el lenguaje DAX. Simplemente es cuestión de especificar el valor entero correspondiente a la jerarquía de campos deseada. Por supuesto, esto requiere que dispongamos de dichos campos en nuestra dimensión de Fechas, para luego usar en el objeto visual así pueda ser referenciado como campos visual, pero la elaboración de una dimensión de fechas bien estructurada es un tema aparte.
Conclusiones
El parámetro Restablecer introduce una notable flexibilidad al lenguaje DAX, permitiendo ajustes precisos en los cálculos al momento preciso. Ofrece múltiples opciones, desde reiniciar en el nivel más alto o más bajo de una jerarquía hasta mantener el cálculo sin reinicio, siendo esta última la configuración por defecto. En escenarios con jerarquías complejas, la habilidad de especificar el punto de reinicio mediante números enteros, positivos o negativos, optimiza la adaptabilidad de los cálculos a la estructura de los datos.
Actualmente, se extraña la posibilidad de reiniciar los cálculos por nombre en vez de por posición, una característica que podría simplificar aún más la personalización de los análisis. Sin embargo, considerando que esta función está en sus fases iniciales, es de esperar que futuras actualizaciones amplíen sus capacidades, mejorando sustancialmente la experiencia de los cálculos visuales en Lenguaje DAX.