Transición de contexto en Inteligencia de Tiempo

Hay un factor importante que no se ha mencionado todavía. Hemos visto que las funciones de inteligencia de tiempo necesitan una referencia al calendario para poder hacer su trabajo. Hasta ahora hemos utilizado una referencia a la columna conteniendo las fechas del calendario, pero lo cierto es que lo que las funciones de inteligencia de tiempo requieren es una tabla, no una columna.

Esto supone que, cuando pasamos a la función de inteligencia de tiempo que se trate una referencia a, por ejemplo, Calendar[Date], la máquina DAX va a convertir esta columna en tabla, y lo va a hacer usando la siguiente expresión:

CALCULATETABLE(DISTINCT(Calendar[Date]))

Aunque estas funciones volverán a ser mencionadas en el futuro, adelantemos que la función DISTINCT va a extraer los valores únicos de la columna indicada devolviendo una tabla. La función CALCULATETABLE, por otro lado, es semejante a CALCULATE, pero aplicada a tablas: permite obtener una tabla calculada modificando el contexto de filtro en el que se va a evaluar. Si -como en el código anterior- no se añaden filtros, la función CALCULATETABLE no va a modificar el contexto de filtro. Eso sí, si se ejecuta en contexto de fila, va a provocar una transición de contexto. Y esto es lo que debe interesarnos pues, en ocasiones, las funciones de inteligencia de tiempo usadas en contexto de fila no van a devolver los valores que esperaríamos y el motivo va a ser, probablemente, éste.

En todo caso, esta conversión de columna a tabla (con la transición de contexto asociada) va a ocurrir solo cuando pasemos a la función de inteligencia de tiempo una columna. Si le pasamos directamente una tabla, no se va a realizar la conversión de columna a tabla y no se va a ejecutar la transición de contexto.