<< Back

Las funciones de fechas en Tableau

Probablemente has tenido que realizar operaciones con fechas en Tableau y no has sabido exactamente la sintáxis o la función de lagunas de las funciones disponibles.

En el blog de hoy, haremos un repaso a todas las funciones de fechas con ejemplos de cada una de ellas:

DATEADD

DateAdd calcula un número de días, semanas, meses, trimestres o años posteriores o anteriores a una fecha. Por ejemplo, si queremos obtener una nueva variable que nos devuelva un valor 5 días posterior a una fecha de nuestra base de datos llamada “Fecha de pedido” podríamos crear un cálculo como:

DATEADD(“day”,5,[Fecha de pedido])

Pudiendo en lugar de utilizar “week”, “month”, “quarter” o “year” en lugar de “day” para sumar 5 semanas, días, trimestres o años a la fecha dada. O incluso “hour”, “minute”, “second” si queremos trabajar con la hora para agregar o restar horas, minutos o segundos. También podemos utilizar valores negativos. Si en lugar de “5” escribiéramos “-5” restaríamos 5 días. Otra opción sería utilizar un valor dinámico también en base a otra variable de nuestra base de datos, por ejemplo:

DATEADD(“month”,[numero de meses],[Fecha de pedido])

Estos ejemplos crearán automáticamente un campo de tipo Fecha y hora. Por lo que una forma de eliminar la hora y contar sólo con fechas, sería incluir todo el cálculo en otra función DATE. Ejemplo:

DATE(DATEADD(“month”,-2, [Fecha de pedido]))

Otra opción sería cambiar el tipo de datos de DateTime a Date en el panel de datos.

DATEDIFF

Funciona de forma muy similar a DATEADD, pero calcula la diferencia entre dos fechas. Por ejemplo:

DATEDIFF(“minute”,[Fecha Login], [Fecha Logout])

Calcularía la diferencia entre la fecha inicial “Fecha Login” y la fecha final “Fecha Logout”.

Se puede además añadir un parámetro al final para especificar qué dia de la semana queremos considerar como el inicio de la semana. Es decir:

DATEDIFF(“week”,[Inicio],[Final],”sunday”)

Calculará la diferencia entre las dos fechas en semanas, tomando los domingos como el inicio de cada semana.

DATENAME

DATENAME devuelve el valor, en formato texto, de una parte específica de la fecha indicada. Por ejemplo:

DATENAME(“week”,[Fecha de pedido])

Creará una nueva dimensión, con el valor numérico (1, 2, 3, 49. etc) de la semana del año de la columna Fecha de pedido, pero en formato texto.

DATEPARSE

Posiblemente una de las funciones de fecha más interesantes, ya que nos permite convertir una variable que Tableau no identifique como una fecha a una fecha propiamente dicha. Imaginemos que tenemos una columna con un texto indicando la fecha, pero que Tableau no es capaz de reconocer como una variable de tipo fecha llamada “Fecha sin formato”, ya que tiene este formato 15**09**2019.

Podríamos crear un nuevo campo y convertir esta variable en fecha con la siguiente fórmula:

DATEPARSE(“dd**MM**YYYY”,[Fecha sin formato])

Podemos así identificar cada uno de los elementos de una fecha e indicar el número de posiciones o caracteres a Tableau para que formatee la columna.

Con “Y” identificaremos digitos de año. Si por ejemplo el año sólo tiene 2 dígitos, utilizaremos YY y si tiene 4 dígitos utilizaremos YYY.

Con “M” identificaremos el mes. Por ejemplo MM identificará 2 dígitos del mes. MMM identificará “Sep” como septiembre (en inglés) y MMMM identificará el nombre en inglés del mes, como “September”.

Con “w” (minúscula) identificaremos semanas del año. así ww identificará un valor “35” como la semana 35 del año.

“d” (minúscula) identifica días del mes. Así “dd” será capaz de identificar dos dígitos del día del mes (de 0 a 31).

Una “D” mayúscula identificaría días del año de 1 a 365: como por ejemplo usar DDD si tenemos un valor que es el número del día del año.

Con “HH” identificaríamos horas en formato 0-24 horas y con “hh” (minúscula) en formato 0-12 horas.

Con “m” (minúscula) identificaríamos los minutos. Usando por ejemplo mm para identificar dos dígitos de minutos.

De forma similar funcionaría “s” para identificar los segundos.

DATEPART

DATEPART funciona de forma muy similar a DATENAME pero devolviendo el valor de la fecha indicado en formato numérico, no como texto. Por ejemplo, si queremos extraer el mes de una fecha, podemos crear un cálculo como:

DATEPART(“month”,[Fecha])

Si una fila concreta de nuestra columna “Fecha” contiene la fecha “18/01/2019” el cálculo devolverá el número 1 ya que se trata del mes de dicho registro.

DATETRUNC

DATETRUNC permite fijar una fecha a un nivel determinado. Imaginemos que queremos convertir todas las fechas de un mes concreto al dia inicial del mes, ya que queremos por ejemplo para todas las fechas de Enero de 2019, tener el valor 1 de Enero de 2019 independientemente del día concreto que tengan en nuestra base de datos. Así:

DATETRUNC(“month”,[Fecha])

Creará una nueva variable en la que toda los valores en la columna “Fecha” entre el 1 de enero de 2019 y el 31 de enero de 2019 tendrán el valor “01/01/2019”. Y todas las fechas entre el valor 1 de febrero de 2019 y 28 de febrero de 2019 tendrán el valor “01/02/2019” y así sucesivamente.

DAY | MONTH | WEEK | QUARTER | YEAR

La función DAY devolverá el día del mes de una fecha.

DAY([Fecha])

La función MONTH devolverá el valor del mes del año:

MONTH([Fecha])

De forma similar, las funciones WEEK, QUARTER y YEAR devolverán la semana del año, el trimestre del año y el año de las fechas indicadas:

WEEK([Fecha]) | QUARTER([Fecha]) | YEAR([Fecha])

Existen funciones similares para obtener trimestres, semanas, días de la semana y años utilizando el calendario ISO8601. Son las funciones ISOQUARTER, ISOWEEK, ISOWEEKDAY, ISOYEAR.

NOW & TODAY

Las funciones NOW() y TODAY(), escritas sin ningún parámetro y tan solo con un símbolo de abrir y cerrar paréntesis sin nada entre medias, nos devolverán las fechas del momento actual (con horas, minutos y segundos) si utilizamos la funcion NOW() y la fecha del día actual si utilizamos la función TODAY().

ISDATE

ISDATE comprueba si un valor o una variable tiene un formato de fecha válido para Tableau. Por ejemplo:

ISDATE([Columna A])

Comprobará si los valores de la columna A sin valores válidos de fecha (y devolverá el valor “TRUE”) o si por el contrario no son fechas válidas, devolviendo el valor “FALSE”.

Abajo incluyo un ejemplo de lo que devolverían varios cálculos utilizando estas funciones, con Order ID, Fecha de pedido y Fecha de envío como variables de nuestra base de datos:

2 thoughts on “Las funciones de fechas en Tableau

  1. Hola Pablo, muy buen artículo.
    Fui alumno tuyo en un magnífico curso que diste sobre Tableau en Sevilla.
    Estoy preparando un Dashboard donde a diario cargo datos con nuevas fechas y no consigo que de forma automática se detecte la última fecha disponible en la base de datos para que el Dashboard se actualice automáticamente. ¿Podrías indicarme como resolver este tema?
    Gracias. Fernando

    1. Hola Fernando, un placer volver a saludarte. Depende un poco del caso de uso concreto, pero tal vez la mejor forma de hacerlo para que automáticamente Tableau filtre para la fecha más reciente del dashboard es crear un campo calculado que sea [Fecha] = {MAX({Fecha]} La parte de {MAX({Fecha]} lo que te dará será siempre la máxima fecha en tu base de datos. Por lo que la expresión te devolverá un valor “Verdadero” para todos los registros en los que la variable Fecha sea igual a la fecha más reciente de la base de datos. Si usas ese cálculo como filtro = Verdadero, debería de ese modo filtrarse automáticamente para obtener sólo datos de la fecha más reciente. Yo es un método que utilizo a menudo.

      Un saludo,
      Pablo

Leave a Reply

Your email address will not be published. Required fields are marked *