Creación de columna con el trimestre

En la tabla Calendar habíamos dejado pendiente la creación de una columna conteniendo el trimestre correspondiente a cada fecha. El motivo es que, usando la herramienta comentada en su momento, podíamos crear una columna conteniendo solo el número del trimestre. Pero supongamos que lo que realmente queremos es que nuestra nueva columna contenga valores del tipo Q1 para el primer trimestre, Q2 para el segundo, etc. Es decir, queremos concatenar la letra “Q” al número de trimestre. Y para esto vamos a utilizar el lenguaje M.

Cerremos, por lo tanto, el editor avanzado (ya sea haciendo clic en el botón Listo o en Cancelar) y seleccionemos la consulta Calendar en el panel izquierdo de consultas. A continuación, añadamos una nueva columna personalizada haciendo clic en Agregar columna > General > Columna personalizada, lo que abrirá una ventana en la que configurar nuestra nueva columna:

Creación de columna con el trimestre

En esta ventana tenemos que indicar el nombre de la nueva columna (“Quarter”, por ejemplo) y la fórmula que va a definir los valores de esta columna para cada una de las filas de la tabla. Sin profundizar demasiado, las funciones que vamos a necesitar son las siguientes:

  • Date.QuarterOfYear, que devuelve el número de trimestre de una fecha
  • Text.From, que convierte un valor (numérico, por ejemplo), en texto, y
  • &, operador que nos permite concatenar textos

La primera versión (errónea) de la fórmula a escribir detrás del signo = que se muestra en la ventana podría ser

“Q” & Date.QuarterOfYear([Date])

que podríamos leer diciendo “queremos que en cada fila el valor de esta columna sea el resultado de concatenar el texto ‘Q’ y el número de trimestre de lo que haya en la columna [Date]”.

El problema es que el operador & concatena textos: no es capaz de concatenar un texto (“Q”) y un número (que es lo que devuelve la función Date.QuarterOfYear). De ahí la necesidad de usar la función Text.From para convertir el número de trimestre en un texto.

Es decir, la expresión M correcta a escribir detrás del signo = sería:

"Q" & Text.From(Date.QuarterOfYear([Date]))
Creación de columna con el trimestre

Si hacemos clic en el botón Aceptar, veremos la nueva columna creada, así como el paso añadido al proceso ETL:

Creación de columna con el trimestre

Eso sí, vemos en la imagen anterior que la nueva columna no ha recibido tipo, de forma que podemos hacerlo nosotros haciendo clic en el icono “ABC123” que se muestra en la cabecera y seleccionando “Texto”.

Si quieres aprender el lenguaje M tienes un completo tutorial disponible aquí.