Insights / Blog

PostGenericoAlteryx

Cómo hacer un calendario dinámico con Alteryx

Si trabajas con fechas en tus análisis de datos, sabrás lo importante que es contar con un calendario dinámico que se adapte a tus necesidades. En general, se suele crear una tabla calendario que engloba un rango de fechas muy elevado, los cuales suelen incluir columnas basadas en el año, mes, fecha completa… Esta tabla es muy útil para poder conectarse a nuestros datos y tener una tabla principal de fecha, lo que permite utilizarla para todos nuestros cálculos de fechas entre tablas.

No obstante, con Alteryx podremos ir más allá, pues podremos crear nuestras tablas de fechas de manera dinámica, basadas en el día en el que se ejecute el flujo, creando una tabla que tenga solo las fechas que necesitamos para nuestros análisis, por ejemplo, solo el mes anterior, el año anterior… Siempre basados en nuestra fecha actual.

Comencemos desde Alteryx. No necesitamos cargar ningún archivo externo, debido a que Alteryx ya nos proporciona las herramientas necesarias para generar nuestra tabla.

 

Introduce una Entrada de texto

El primer paso es arrastrar una Entrada de texto a nuestro lienzo en blanco. Este nodo permite crear nuestras tablas personalizadas y completarla con los datos que queramos. En este caso, crearemos dos columnas : Inicio y Final. En cada columna, colocaremos el inicio y el final de un rango amplio de fechas, teniendo en cuenta que nuestros cálculos se realizarán solo dentro de ese rango. Para ello, bastará con darle a los espacios en blanco (tanto en el título de las columnas como en las filas) en nuestra ventana de configuración que aparecerá al hacer clic en la Entrada de texto e introducir nuestros datos.

calendario alteryx

Al ejecutar el flujo en este paso, se creará una tabla con una fila y dos columnas, con los datos que hemos introducido. Al introducir la fecha en el formato indicado (año-mes-día), Alteryx detectará automáticamente estas columnas como Fechas.

Genera una tabla de fechas

A continuación, generamos una tabla de fechas basada en este rango. Para ello, arrastramos el nodo Generar filas (situado en la pestaña azul “Preparación”) y lo conectamos a nuestra tabla.

alteryx

Este nodo permite generar una cantidad específica de filas con valores predeterminados, utilizando una iteración (bucle). Se creará una columna que comience con un valor que le indiquemos y, a cada fila subsiguiente, se le aplicará una expresión que le indiquemos basándose en el valor de la fila anterior (siempre y cuando la expresión sea verdadera).

Al hacer clic en el nodo, en nuestra pestaña de configuración, deberemos introducir la condición en la que se basará el nodo para generar filas, la expresión de inicialización y la expresión de bucle. Vayamos por partes:

Crear campo nuevo: Será el nombre de nuestra nueva columna. En nuestro caso, la llamaremos [Fechas] y establecemos el tipo de dato como Date

Expresión de inicialización: Corresponde al campo o expresión en el que comenzará nuestra nueva columna [Fechas]. En nuestro caso, será la columna [Inicio]

Expresión de condición: Será la condición que deberá ser verdadera para que el bucle continúe y se sigan generando filas. En nuestro caso, queremos que se generen filas siempre y cuando no superen nuestra fecha final establecida. Por tanto, pondremos [Fechas] <= [Final]

Expresión de bucle: Será la expresión que se aplicará a cada fila, basándose en el valor de la fila anterior. Queremos que cada fila sea un día más que la fila anterior. Al tratarse de columnas tipo Date, deberemos usar fórmulas de manipulación de días. Para añadir fechas, usaremos la función datetimeADD(). Esta te permite agregar o restar una cantidad específica de tiempo (días, horas, minutos, segundos, etc.) a una fecha y hora dadas. Esta función toma tres argumentos: la fecha y hora inicial, la cantidad de tiempo que se desea agregar o restar, y la unidad de tiempo (días, horas, minutos, etc.) en la que se especifica la cantidad de tiempo. Al utilizar esta función, se generará una nueva fecha y hora que refleje el cambio especificado en la cantidad de tiempo.

Por tanto, nuestra expresión será datetimeAdd([Fechas],1,«days»). La unidad de tiempo debe indicarse en inglés y hay muchas disponibles (“months”,”years”,”hours”…). Para conocer más, puedes acceder a la documentación de DateTimeFunctions

alteryx

Al ejecutar el flujo, se creará nuestra tabla deseada 

alteryx

Ya podríamos exportar esta tabla (seleccionando solo nuestra columna de fechas) y ya habríamos generado una tabla de fechas clásica. No obstante, en Alteryx podemos hacer mucho más. 

 

Generación del calendario dinámico

Supongamos que necesitamos crear una tabla que recoge los últimos 30 días desde nuestra fecha de hoy. Para ello, usaremos una combinación de herramientas de Alteryx que nos permita filtrar estos registros de nuestra tabla de fechas.

En primer lugar, crearemos un Record ID, arrastrando nuestro nodo de Id. del registro desde la pestaña Preparación al lienzo y la conectamos a nuestro último nodo.

alteryx

Se creará un nodo único para cada fecha. A continuación, iremos al buscador de nodos (arriba a la derecha) y buscaremos el nodo Fecha y hora ahora. Lo arrastramos debajo de nuestro flujo, pero sin conectarlo a nada.

alteryx

Este nodo permite extraer el día actual en formato cadena, es decir, la fecha en la que se ejecuta el flujo. En la pestaña de configuración de este nodo, podemos seleccionar el formato de salida de nuestra columna, en nuestro caso vamos a indicarle el formato año-mes-día (yyyy-MM-dd)

alteryx

Vamos a transformar la fecha que nos ha devuelto a formato Fecha y Hora, puesto que ahora está en formato Cadena (Texto/String). Podemos utilizar varios métodos, pero vamos a usar el nodo Fecha y hora para ello, situado en la pestaña Analizar.

alteryx

Ese nodo permite realizar varias modificaciones a nuestros campos temporales. Deberemos indicar qué clase de transformación queremos hacer (Cadena a formato de fecha y hora), indicando el campo a convertir y el formato en el que está entrando nuestra cadena (yyyy-MM-dd). Se creará una nueva columna que contendrá la misma cadena pero ya en formato de Fecha y Hora

alteryx

Ya tenemos nuestra fecha actual. Aquí viene la lógica para conseguir nuestra tabla deseada. Vamos a realizar un join entre nuestras dos tablas. Para ello, usaremos el nodo Unir de nuestra pestaña morada Unir. Conectamos nuestras tablas en las dos entradas de la izquierda. 

alteryx

Seleccionamos los campos que deben coincidir. En este caso, en la tabla original será el campo [Fechas] y en la generada para el día de hoy será [DateTime_Out]. Indicaremos que solo se quede con el RecordID.

alteryx

¿Qué hemos conseguido con esto? Obtener el ID único del día en el que se ejecute el flujo. Al ejecutarlo, la pestaña J de nodo Unir nos devolverá este único registro, obtenido de la tabla de fechas original. Con este ID único, vamos a aplicar la misma lógica que hemos usado para crear nuestra tabla de fechas, es decir, vamos a crear una tabla con los 30 IDs anteriores al de la fecha de hoy. Al crear nuestros IDs únicos, estos se crean en orden ascendente. Por tanto, si queremos extraer los 30 días anteriores a la fecha de hoy, deberemos generar los 30 IDs anteriores al ID de la fecha de hoy. 

Esto lo conseguimos de nuevo con el  nodo Generar Filas, el cual conectamos a la salida J del nodo Unir

alteryx

Vamos a especificarle que cree una columna nueva llamada [Días hacia atrás] en formato numérico. 

La expresión de inicialización será el [RecordID]

La expresión de condición deberá englobar nuestro RecordID y los 30 anteriores, por lo que lo indicamos con esta expresión [Días hacia atrás] >= [RecordID] – 30.

La expresión de bucle deberá ir restando nuestro RecordID en una unidad. Por tanto, indicaremos [Días hacia atrás] – 1

alteryx

Habremos generado una columna con los IDs únicos que corresponden a los 30 días anteriores al día de hoy (incluido el de hoy). Por tanto, podemos volver a usar el nodo Unir basándonos en estos campos para quedarnos solo con las fechas correspondientes a esos IDs. Por tanto, conectamos nuestra tabla original a la entrada L del nodo Unir y nuestra tabla de IDs por la entrada R. Indicaremos los campos por los que se debe unir, es decir, [RecordID] y [Días hacia atrás]. Señalamos sólo la columna de Fechas de la entrada Left, para quedarnos con las fechas asociadas a esos IDs.

alteryx

Tras ejecutarlo, en nuestra salida J encontraremos la tabla con los 30 días anteriores a la fecha actual, esta última también incluida en el último registro.

alteryx

Ya tendremos finalizado nuestro flujo de trabajo. Cada vez que ejecutemos este flujo, se creará una tabla de los últimos 30 días a partir de hoy. Si se ejecutase al día siguiente, se añadiría el nuevo día y se eliminaría el día más antiguo, generandose de forma dinámica. Recuerda que siempre podremos cambiar el rango que queremos generar dinámicamente cambiando el valor en el segundo nodo de Generar Filas. Es decir, si queremos una tabla con un año hacia atrás, deberemos cambiar el valor de 30 (30 días antes) por 365 (365 días antes). No obstante, esto ya dependerá del tipo de análisis.

alteryx

Ya podremos trabajar a partir de este flujo, ya sea para guardar nuestra tabla, generar una clave con la fecha para posteriores filtros o directamente filtrar por estas fechas en otra base de datos

alteryx

Esperamos que esta guía te haya resultado útil y te haya brindado nuevas ideas para explorar las posibilidades de Alteryx a la hora de manipular nuestros datos. La sencillez a la hora de crear operaciones complejas, la facilidad en el tratamiento de datos y sus múltiples funcionalidades hacen de Alteryx la herramienta perfecta para nuestros análisis de datos. 

Últimos post

Manufacturing Analytics: Qué es y cómo influye en la optimización de costes

Herramientas de Análisis de datos: 4 factores a considerar al elegirla

Dónde se aplica la analítica industrial

¿Qué estás buscando?

¿Quién trata tus datos?

The Information Lab Spain, S.L.
(en adelante, “Titular“)

¿Por qué tratamos los datos que te pedimos?

Se tratan tus datos para poder prestarte los servicios solicitados. + info

¿Cuál es la legitimación para este tratamiento de tus datos?

Estos datos son necesarios para llevar a cabo la resolución de consultas que puedas plantearnos o para la prestación de los servicios que se hayan solicitado a través del Sitio Web. + info

¿Se van a hacer cesiones o transferencias con tus datos?

Tus datos no serán cedidos a terceras empresas. + info

¿Cuáles son mis derechos?

El interesado tiene derecho a ejercitar su derecho de:
Acceso, rectificación, supresión, oposición, portabilidad de los Datos, limitación del Tratamiento y a no ser objeto de decisiones automatizadas individualizadas. + info

¿Tienes dudas?

Tanto si tienes alguna o sugerencia como si quieres darte de baja ponte en contacto con nosotros enviando un email a la siguiente dirección: info@theinformationlab.es