Seguimos con la serie de los cálculos visuales, y en concreto con la función NEXT. La función NEXT recupera un valor en el elemento siguiente de un eje de la matriz visual ¿¿¿¿ Quuuuuuééééééé???? ¿Qué hace que? Sí, la verdad que la definición de la página oficial de Microsoft no es muy amigable… Lo que hace la función es “pescar” el valor siguiente la de la celda X pasos, estos pasos se lo definimos nosotros. Bien, vamos a ver su sintaxis de nuevo:

 

Donde el atributo <column>, siendo el único obligatorio, es la columna que queremos recuperar/traer.

Ahora, como siempre, vamos a Power BI para cacharrear y ver su funcionamiento. Para ello, creamos un nuevo calculo visual (sino sabes como hacerlo, te dejo la entrada al primer post de esta serie aquí).  Y escribimos lo siguiente:

Fx Next = NEXT([Ventas Totales])

 

Aceptamos y nos devuelve lo siguiente:

Como podemos ver, para el valor de CalendarMonth 200701 en el nuevo calculo visual, nos está devolviendo el valor del CalendarMonth 200702 y así sucesivamente:

 

Vemos que nos está recuperando el valor siguiente de la jerarquía, es decir, la función DAX nos devuelve el valor siguiente dependiendo del eje en el que me encuentre, lo contrario que hacía la función PREVIOUS (sino sabes de lo que hablo, revisa este post)

 

Por defecto, nos devuelve el siguiente valor, pero si queremos desplazarnos un número mayor de celdas, basta con que se lo indiquemos en el siguiente argumento, que es el de <steps> o pasos. Por ejemplo, en vez de recuperar el siguiente valor, supongamos que queremos recuperar el valor de 3 celdas (como me recuerda a Excel… 😉). Para ello, escribimos lo siguiente:

Fx Next = NEXT([Ventas Totales],3)

 

Y obtenemos:

 

El valor de la celda desplazada 3 veces hacia abajo. Vamos, que está haciendo exactamente lo contrario que la función PREVIOUS que vimos en la entrada anterior. Entonces, podemos pensar, ser más inteligentes que los que han inventado esto y decir: “Javi, si en el paso pones -1 entonces conviertes la función NEXT en la función PREVIOUS”… Curioso pensamiento, vamos a hacer:

Fx Next = NEXT([Ventas Totales],-1)

 

Y nos devuelve:

 

Nos ha devuelto un error y que el paso tiene que ser superior o igual a 1, lógico, ya que, sino con una misma función podríamos ir hacia adelante o hacia atrás, y no es su cometido. (Cierto es que, si en nuestra tabla calendario incluimos desvíos, con la misma función podríamos ir hacia el pasado o futuro, pero esa es harina de otro costal).

El siguiente argumento que podemos indicarle a la función es la manera de desplazarse, es decir, mediante ROWS, COLUMNS o una combinación de ambas. ¿Qué quiero decir? Vamos a verlo mediante un dibujo:

ROWS o por defecto:

La función va a ir recorriendo la matriz y recuperando el valor de la fila en cuestión los X pasos que le indiquemos.

COLUMNS:

La función va a ir recorriendo la matriz y recuperando el valor de la columna en cuestión los X pasos que le indiquemos. Es decir, que el valor recuperado en vez de ir verticalmente, en este caso va horizontalmente.

 

ROWS COLUMNS

La función va a ir recorriendo la matriz y recuperando el valor de la fila de la columna y luego continuará por la segunda columna, en cuestión de los X pasos que le indiquemos.

 

En este caso, vamos a dejarlo en ROWS obteniendo lo siguiente:

 

El siguiente argumento, es para ver como gestionar los espacios en blanco. Los valores válidos incluyen: DEFAULT, FIRST, LAST. O lo que es lo mismo, el como ha de tenerlos en cuenta. En este caso, no tenemos espacios en blanco por lo que lo dejamos en DEFAULT  y continuamos al último argumento. El argumento restablecer (<reset>) que especifica cómo se reinicia el cálculo. Los valores válidos son: None, LowestParent, HighestParent o un entero. Ninguno es el valor predeterminado.

El LowestParent, que lo que va a realizar es cuando cambie el padre más próximo a él, es decir, el trimestre y el padre más alejado es el año. Veámoslo:

Fx Next = NEXT([Ventas Totales],3,ROWS,DEFAULT,LOWESTPARENT )

 

Y obtenemos:

Vemos que… algo raro está pasando o ¿es que sólo nos da el valor del trimestre? Lo que está ocurriendo es que le estamos indicando el valor 3 en los pasos, por lo que como tenemos la matriz dividida por trimestre, este se reinicia y no lo podemos ver. Si modificamos el paso a 1, el valor por defecto, vemos:

 Fx Next = NEXT([Ventas Totales],1,ROWS,DEFAULT,LOWESTPARENT )

 

Y nos devuelve:

Vemos que cuando cambia el padre más cercano, en este caso el trimestre, el cálculo visual se reinicia. Si, por el contrario, le indicamos que el valor del argumento es HighestParent:

Fx Next = NEXT([Ventas Totales],1,ROWS,DEFAULT,HIGHESTPARENT )

 

Obtenemos:

 

 

En conclusión, la función NEXT nos permite desplazarnos dinámicamente entre los valores de una matriz, independientemente del contexto de filtro. Su flexibilidad radica en la capacidad de ajustar el desplazamiento, operar en distintos ejes (filas o columnas) y controlar cómo se reinicia el cálculo según niveles jerárquicos pero siempre mirando hacia adelante, y no hacia atrás como la función PREVIUOS.

 En definitiva, la combinación de las funciones NEXT y PREVIOUS en Power BI proporciona capacidades de desplazamiento dinámico entre valores de una matriz, lo que imita cálculos comunes en hojas de cálculo como Excel. Estas funciones permiten avanzar o retroceder entre elementos en un eje, controlando parámetros como pasos, dirección y reinicio por niveles jerárquicos. Sin embargo, su utilidad sigue limitada al ámbito visual, ya que no dependen de contextos de filtro y no son reutilizables en otros cálculos del modelo. Esto las hace prácticas para casos específicos en análisis visual, pero menos versátiles para escenarios más complejos en el modelo tabular.

 

Nos vemos en los datos