Función ADDCOLUMNS

Hemos visto ya esta función: ADDCOLUMNS acepta una tabla como primer argumento y parejas de nombre de columna / expresión DAX como argumentos adicionales, y devuelve una tabla formada por la adición a la tabla pasada como primer argumento de las columnas indicadas por el resto de argumentos. Veamos un ejemplo aplicado a la gestión del calendario: En la vista de datos de Power BI vamos a crear una nueva tabla con el siguiente código:

Calendario = 
ADDCOLUMNS(
    CALENDARAUTO(),
    "year", YEAR([Date])
)

(si ya teníamos una tabla con este nombre tendremos que eliminarla antes, dar a esta nueva tabla que estamos creando ahora otro nombre o sobrescribir la antigua)

El resultado es el siguiente:

Función ADDCOLUMNS

Partimos de una tabla que pasamos como primer argumento: CALENDARAUTO(), tabla que no existe previamente -se está generando en el momento de ejecutar el código-. Adicionalmente a este primer argumento estamos pasando dos argumentos más: “year”, que se interpreta como el nombre de la nueva columna a añadir, y YEAR([Date]), que se interpreta como la expresión DAX que va a generar los valores de esta nueva columna (que, en este caso, extrae el año de la fecha). Es importante destacar que esta expresión está extrayendo, en contexto de fila, el año del campo Date, que es el nombre de la única columna que se crea cuando usamos la función CALENDARAUTO.

Pues bien, para generar un calendario usando DAX podemos crear, en primer lugar, la tabla conteniendo la columna Date usando las funciones CALENDAR o CALENDARAUTO y añadir posteriormente las columnas calculadas que deseemos una a una (con el año, el trimestre, etc.), o podemos crear todo al mismo tiempo usando la función ADDCOLUMNS. Esto nos permitiría reusar la expresión en más de un informe. Por ejemplo:

Calendario = 
ADDCOLUMNS(
    CALENDARAUTO(),
    "Year", YEAR([Date]),
    "YearMonth", FORMAT([Date], "YYYYMM"),
    "Quarter number", QUARTER([Date]),
    "Quarter", "Q" & FORMAT([Date], "Q"),
    "Month number", MONTH([Date]),
    "Month", FORMAT([Date], "MMMM", "es-es"),
    "Day", DAY([Date]),
    "Day name", FORMAT([Date], "DDDD", "es-es")
)
Función ADDCOLUMNS