Analisis con Tableau: Datediff: Cómo calcular la diferencia entre dos fechas en Tableau

sábado, 14 de noviembre de 2015

Datediff: Cómo calcular la diferencia entre dos fechas en Tableau

Los campos calculados (Calculated Fields) son una de las funciones más interesantes y potentes de Tableau. En este post voy a hablar de uno de los cálculos más habituales cuando estamos utilizando fechas: DATEDIFF, es decir, la diferencia entre dos fechas. Especialmente útil para analizar, por ejemplo, el funcionamiento de un departamento logísitico de una tienda, y saber el tiempo desde que un cliente realiza un pedido hasta que este se envía al comprador.

La fórmula


La fórmula DATEDIFF requiere únicamente indicar 3 campos. El periodo en el que queremos que la diferencia se calcule, es decir, si queremos la diferencia en minutos, dias, meses, etc. La fecha de inicio del cálculo (la fecha de compra del artículo, en el ejemplo antes mencioonado) y la fecha final del cálculo (la fecha de envío del artículo, en nuestro ejemplo). La sintaxis a usar es por tanto la siguiente:

DATEDIFF ("periodo",[Fecha de inicio],[Fecha final]) 

Podemos añadir además un campo adicional al final de la fórmula, el inicio de la semana, que indicaríamos entre comillas después de la fecha final y separado de esta con una coma. Si no se indica Tableau utilizará como el inicio de la semana el predeterminado por la base de datos.

El periodo


A la hora de indicar el periodo en el que queremos la diferencia entre ambas fechas, tendremos que indicarlo en inglés, incluso si estamos utilizando español como el idioma predeterminado de Tableau, pudiendo optar por las siguientes alternativas:

  • Años: "year"
  • Cuatrimestres: "quarter"
  • Meses: "month"
  • Dias del año: "dayofyear"
  • Dias: "day"
  • Dias de la semana: "weekday"
  • Horas: "hour"
  • Minutos: "minute"
  • Segundos: "second"

Importante señalar que no debemos indicar el periodo en plural, es decir, no escribir nunca "years" porque entonces obtendremos un error en el campo calculado. En el caso de DATEDIFF, y tras varias pruebas, no he encontrado diferencias en calcular la diferencia utilizando días del año (donde, por ejemplo, el 1 de Febrero sería el día 32) o simplemente días, así que podríamos utilizar el periodo de días ("day") sin problemas.

Siguiendo con nuestro ejemplo, vamos a calcular la diferencia en días entre la fecha de cada pedido y la fecha de envío utilizando la base de datos Superstore Sales de Tableau. La fórmula que tendríamos que indicar en el campo calculado sería por tanto:


Así de fácil, ya tenemos la diferencia entre ambas fechas calculada en días. Ahora nos quedaría visualizar el tiempo de envío para nuestros posibles análisis y nuestro seguimiento del funcionamiento del departamento logístico. Para ello podemos, por ejemplo:

Analizar el tiempo de envío de cada pedido utilizando un diagrama de Gantt


Para ello arrastramos nuestro identificador de cada pedido (Order ID) en filas, la fecha de realización del pedido o de compra en columnas (Order Date), nuestro campo calculado a la pestaña de Tamaño (Size) y en las marcas indicamos Barra Gant (Gant Bar). Podemos además filtrar nuestra visualización por mes, ordenar los pedidos de mayor a menor tiempo de envío y obtendríamos algo parecido a esto:


Analizar el tiempo de envío por código postal en un mapa


Si tenemos el código postal en nuesta base de datos y lo hemos definido como campo geográfico en Tableau, podríamos crear una visualización similar a esta:



Simplemente con la latitud y longitud en filas y columnas respectivamente (o aún más fácil, haciendo doble click en nuestro variable geográfica), nuestro campo calculado en Color y el número de pedidos en Tamaño,

Identificar códigos postales en los que el tiempo de envío está por encima de nuestro tiempo objetivo


Podemos crear un sencillo gráfico de barras en el que se muestre cada código postal y el tiempo medio de envío en cada uno. Para darle mayor valor, podemos añadir un parámetro en el que el manager o el analista pueda seleccionar el tiempo medio de envío objetivo, mostrarlo como una línea de referencia y crear un segundo campo para resaltar en distinto color aquellos códigos postales donde el tiempo de envío está por encima de nuestros estándares de calidad. Añadimos la región como un filtro rápido para que podamos filtrar entre las distintas regiones geográficas y obtendríamos algo similar a este ejemplo:


Y hasta aquí la función DATEDIFF. Como se puede ver bien sencilla de utilizar.

3 comentarios:

Anónimo dijo...

Hello! I have a question, I work for a technology company as a Pricing Analyst, and I have a problem with tableau because I am learning to use this program. I have a data base and I need to know how can I do to make that tableau sum the quotes that have more than 3 months from today's date, this is to calculate the hit rate, but I do not know the formula I should use. I am trying to use "iif" but I need something else to complete the formula because it is wrong.

In my data base I have some fields that I am using for the formula like the quote sent date and the quote sent. What I need is to make that tableau sum the sent quotes that have more than 3 months from today's date.

Thank you in advance!

Anónimo dijo...

Other thing, the formula for the hit rate is won quotes/won quotes + lost quotes + sent quotes... What I need to modify is the last part of the formula (sent quotes) for making that tableau takes into account just the sent quotes that have more than 3 months from today's date.

Thankv you in advance!

Unknown dijo...

Hi,

could you send me a sample of the data to understand better what are you trying to achieve? You can write me or send it to me to this email address: analisiscontableau@gmail.com

I'll try to help you during the next days, because without having a look at how the data looks like it's a bit difficult to help you.

Regards,
Pablo