- Suscribirse a un feed RSS
- Marcar como nuevo
- Marcar como leída
- Favorito
- Suscribir
- Página de impresión sencilla
- Notificar al moderador
- Suscribirse a un feed RSS
- Marcar como nuevo
- Marcar como leída
- Favorito
- Suscribir
- Página de impresión sencilla
- Notificar al moderador
Todos hemos tenido la necesidad de descargar datos de un sitio web, el principal problema que enfrentamos es que es un proceso manual, tenemos que entrar al sitio, buscar el archivo correcto y descargarlo para después prepararlo usando Excel.
Sería genial que pudiéramos automatizar el proceso e incluso preparar los datos con un clic ¿no creen?
No sólo seria, es excelente y podemos hacerlo de forma sencilla usando Alteryx.
En este artículo mostraré los pasos para configurarlo y además compartiré el flujo terminado para que puedan seguirlo paso a paso o modificarlo para usarlo con sus datos.
Este es el proceso completo, lo iré describiendo paso a paso para que sea más claro.
Ubicación del archivo
Primero hay que ubicar dónde se encuentra el archivo que queremos descargar.
Para este ejemplo será un archivo con casos confirmados de coronavirus del sitio github.com
Como se puede ver en la liga de arriba, es un archivo separado por comas y tiene la información de casos comprobados de COVID19 por país de forma semanal.
Si quisiéramos tener estos datos para actualizar nuestros reportes, tendríamos que entrar al sitio, buscar el archivo y descargarlo a mano, luego en Excel cambiar el formato o el rango para poder crear un nuevo reporte que incluya una nueva semana; este proceso es laborioso y toma mucho tiempo, además de que está sujeto a errores.
Para comenzar descargamos el archivo en formato CSV para usarlo de plantilla en el flujo de trabajo que se creará más adelante.
Descargar el archivo
Con Alteryx podemos utilizar el poderoso y sencillo bloque analítuco Descargar para hacerlo de forma automática.
Su configuración es muy sencilla y requiere de dos elementos más para funcionar de forma óptima y que sea más sencilla de mantener.
Primero requerimos de una Entrada de texto donde colocaremos la dirección de la página a la que nos queremos conectar y el nombre del archivo que queremos bajar.
Se agrega un campo para la URL y otro para el nombre del archivo.
En la descarga.
Se selecciona la configuración como en la pantalla.
En URL se selecciona el campo URL de la entrada de texto que habíamos colocado.
En la salida, se selecciona A un campo, como String (Cadena).
En la pestaña encabezados.
Se selecciona Filename y eso es todo lo que necesitas configurar para hacer la descarga automática.
La salida de la descarga son los encabezados HTML, si funciona debe indicar un código 200, OK:
Si da cualquier código distinto al rango de 200 es un error, los errores son estándar y se debe a una variedad de condiciones, para consultarlos pueden ingresar aquí:
https://www.restapitutorial.com/httpstatuscodes.html
Los datos estarán en el campo DownloadData, en un solo registro.
Como vemos en el mensaje, el campo tiene nuevas líneas incrustadas y caracteres truncados. Para preparar eso, utilizaremos un bloque de Texto a columnas.
Seleccionamos el campo DownloadData que tiene el contenido que buscamos, como tiene líneas nuevas usamos el delimitador \n con el que dividiremos el contenido cada que haya una nueva línea.
La última opción que hay que seleccionar es dividir en filas, de esta forma podemos asegurar que sin importar el número de registros que tenga, sin especificarlos, esta opción los dividirá, sin importar que varíen cada vez.
Por último, utilizamos un Seleccionar para ocultar las columnas que no utilizaremos más adelante.
Al seleccionar la palomita a la izquierda de los campos descartaremos columnas que no serán de utilidad en el proceso.
Contenedores
Como se puede notar en el flujo cada proceso está agrupado dentro de un contenedor, que sirve varias funciones.
La primera es para ordenar los elementos del flujo y separarlos para que sea más fácil darles mantenimiento y documentarlos.
La segunda es que podemos desactivar los procesos que se encuentren adentro para hacer más rápida la ejecución o si es una parte del proceso que no es necesario correr siempre.
La tercera es que podemos simplificar el flujo ocultando los procesos que tiene al hacer clic en la pestaña de la derecha. En está opción, los bloques analíticos que están dentro del contenedor se seguirán ejecutando.
Preparación de los Datos
El siguiente paso ya que tenemos los datos en Alteryx será darles un formato que podamos utilizar para analizar, ya que los baja como una página web con etiquetas de html que no nos serán de utilidad. Para hacerlo separaremos el contenido en 2, por un lado, los encabezados y por otro los registros que después uniremos para tener el archivo listo.
Contenido que se descarga con etiquetas de HTML
Preparar los encabezados
El primer paso es agregar un Filtro para tener todos los encabezados de las columnas.
La condición para evaluar será si contiene <th> que es la etiqueta html para indicar que es el encabezado de cada categoría.
Agregamos expresiones regulares para limpiar los caracteres que no necesitamos.
Se selecciona la columna para analizar.
Se coloca la expresión regular que hará la limpieza.
<\s*[^>]*>
Sin entrar en gran detalle, lo que hace es sustituir todo lo que esté entre <> y entre [], con eso removemos las etiquetas html y nos quedan solo los datos que buscamos.
Si quieres aprender más acerca de las expresiones regulares y cómo utilizarlas, te recomiendo este curso interactivo y muy sencillo que encontré.
En Salida se selecciona el método que en este caso es reemplazar para cambiar ese texto y colocar un espacio.
Antes de la expresión regular:
Después de la expresión regular:
Utilizamos la Limpieza de datos para remover los espacios en blanco al principio y al final que tenga el campo.
Como los campos están en una columna y para nuestro formato los requerimos como encabezados de las columnas, los tenemos que pivotear o rotar, una función similar a lo que se hace en Excel con una tabla dinámica.
Para hacerlo el primer paso es agregar un ID automático.
Este proceso agrega un campo autonumérico incremental que permitirá que rotemos el contenido incluso si se agregan nuevas columnas de forma automática.
Este bloque no necesita de configuración.
La Tabulación cruzada es el siguiente paso.
Para poder rotar los datos, cambiarlos de columnas a filas. De está forma haremos que los encabezados de las columnas queden en la forma correcta.
Se selecciona el campo que quedará como el encabezado, RecordID, que creamos en el paso anterior; los valores para las columnas son los de DownloadData.
Cuando se rota queda así:
Ya tenemos listos los encabezados de las columnas.
Ahora hay que preparar el contenido de los registros.
Contenido de los registros
Filtramos los campos que tienen la etiqueta <td>.
Después aplicamos los mismos tres pasos del proceso que usamos para los encabezados.
Con regex quitamos las etiquetas de html, limpiamos los espacios en blanco adicionales y agregamos un id a los registros para volverlos a unir más adelante.
Asegurar que el flujo funcione cuando se agreguen nuevas columnas diarias.
Para hacerlo, usaremos un Resumir que obtendrá el último registro cada que se ejecute. Como en este paso la información está aún en filas al contar las filas nos dará el número de columnas que tendrá el archivo.
Seleccionamos el RecordID y la opción Último para que nos dé el registro del final y de esta forma no importa si los registros aumentan o se reducen, siempre tendremos el número total de forma dinámica.
Para usar ese registro, adicionaremos un Agregar campos para unirlo con el contenido de los registros y poder calcular un ID para trasponer los datos y que el contenido de cada registro se divida correctamente.
La única opción que hay que seleccionar es Permitir todas las operaciones de Anexar para que replique el valor en cada uno de los registros.
Con el valor del último registro usamos una fórmula para poder dividir el total de registros entre el número de encabezados que tiene el archivo, para así poder separar el contenido de cada registro.
Para eso usamos una Fórmula.
Seleccionamos la columna que queremos calcular, es una existente.
Tecleamos la división de los registros entre el total de encabezados con el operador ceil que se comporta igual que la función redondear de Excel.
El resultado de esta fórmula será que cada línea tendrá el mismo número de ID para que cuando los rotemos, se acomoden en el lugar correcto.
Si quieren conocer todas las funciones disponibles en la formula y descripción, pueden consultar el siguiente artículo:
https://help.alteryx.com/current/designer/math-functions
El siguiente punto necesario para acomodar los datos es agregar una Fórmula de filas múltiples que creará un ID para cada grupo de registros que de los que acabamos de hacer con la formula.
Crearemos un nuevo campo; seleccionamos una agrupación porque el número se iniciará cada vez que llegué al número de columnas que tiene el archivo, en este caso 333. Al final se coloca la expresión que creará el id, en este caso es [Row-1:Campo nuevo] +1, le sumará uno al campo inmediato anterior que es cero y lo reiniciará cada que llegué al final del valor del campo que seleccionamos en la agrupación.
Ahora rotaremos los datos de forma similar a como lo hicimos con los encabezados usando una Tabulación cruzada.
La única diferencia en este caso será que seleccionaremos un campo para agrupar los valores, esto debido a que tenemos varias filas que se repiten y de está forma se colocarán de forma correcta en el resultado.
Agrupamos por recordID para que distribuya los datos en cada registro según corresponda.
Los encabezados serán el contenido del campo nuevo y los valores de cada columna el contenido de download data.
De esta forma pasamos de tener los datos en filas a columnas.
El siguiente paso es ocultar el id que ya no será de utilidad más adelante.
Para eso utilizaremos un bloque Seleccionar.
Ahora que tenemos preparado tanto los encabezados como el contenido del archivo, hay que unir ambos para tener la información completa.
Para eso usaremos un Unión.
Seleccionamos la opción Configurar automáticamente por posición para que apile el contenido de cada columna de acuerdo con el orden en que aparece en el archivo.
El resultado de la unión es el siguiente:
Ya tiene sentido el contenido y está en un formato que podemos utilizar.
Lo único que queda por hacer es cambiar el nombre de cada columna que ahora tiene números consecutivos mientras que el nombre aparece como el primer registro.
Para hacerlo hay que trabajar con un Cambio de nombre dinámico, que se encuentra en la pestaña de desarrollador.
Con este bloque es posible cambiar el nombre de las columnas, con la opción de Tomar nombre de campos de la primera fila de datos.
Lo que dejará el archivo con el formato correcto.
De está forma es como descargamos y preparamos el archivo que se encontraba en formato de página web (HTML) con Alteryx.
¿Cuál es la ventaja de hacerlo con Alteryx?
- Se puede automatizar
- Se crea una vez y se puede correr diariamente para tener la información actualizada día a día sin modificar el flujo original
Espero que este artículo les sea de utilidad, si tienen alguna pregunta acerca del proceso, pueden hacerla en los comentarios.
Debe ser un usuario registrado para añadir un comentario aquí. Si ya está registrado, inicie sesión. Si todavía no está registrado, hágalo e inicie sesión.