Free Trial

Blog

Visiones e ideas de las mentes más brillantes en el campo del análisis.
Garabujo7
Alteryx
Alteryx

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.

 

 

 

Trabajando 10.gif

 

 

 

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.

 

 

 

Picture13.png

 

 

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

 

https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/...

 

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.

 

 

Picture14.png

 

 

 

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

 

 

Picture16.png

 

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.

 

 

Picture18.png

 

Se agrega un campo para la URL y otro para el nombre del archivo.

 

Picture19.png

 

 

En la descarga.

 

 

Picture20.png

 

  

Picture21.png

 

 

 

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.

 

 

Picture22.png

 

 

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:

 

 

Picture23.png

 

 

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.

 

 

Picture24.png

 

 

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.

 

 

Picture25.png

 

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.

 

 

Picture26.png

 

Por último, utilizamos un Seleccionar para ocultar las columnas que no utilizaremos más adelante.

 

 

Picture27.png

 

 

Al seleccionar la palomita a la izquierda de los campos descartaremos columnas que no serán de utilidad en el proceso.

 

 

Picture28.png

 

Contenedores

 

Picture29.png

 

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.

 

 

Picture30.png

 

 

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.

 

Picture31.png

 

 

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.

 

Picture32.png

 

 

Preparación de los Datos

 

 

Preparation 2.gif

 

 

Picture34.png

 

 

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.

 

Picture35.png

 

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.

 

 

Picture36.png

 

 

La condición para evaluar será si contiene <th> que es la etiqueta html para indicar que es el encabezado de cada categoría.

 

 

Picture37.png

 

 

Agregamos expresiones regulares para limpiar los caracteres que no necesitamos.

 

 

Picture38.png

 

 

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é.

 

https://regexone.com/

 

En Salida se selecciona el método que en este caso es reemplazar para cambiar ese texto y colocar un espacio.

 

 

Picture39.png

 

Antes de la expresión regular:

 

 

Picture40.png

 

 

Después de la expresión regular: 

 

 

Picture41.png

 

 

Utilizamos la Limpieza de datos para remover los espacios en blanco al principio y al final que tenga el campo.

 

 

Picture42.png

Picture43.png

 

 

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.

 

 

Picture44.png

 

Este proceso agrega un campo autonumérico incremental que permitirá que rotemos el contenido incluso si se agregan nuevas columnas de forma automática.

 

 

Picture45.png

 

Este bloque no necesita de configuración.

 

La Tabulación cruzada es el siguiente paso.

 

 

Picture46.png

 

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.

 

 

Pivot.gif

 

 

Picture48.png

 

 

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.

 

 

Picture49.png

 

Cuando se rota queda así:

 

 

Picture50.png

 

 

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>.

 

Picture51.png

 

Picture52.png

 

 

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.

 

 

 

Picture53.png

 

 

 

Asegurar que el flujo funcione cuando se agreguen nuevas columnas diarias.

 

Picture54.png

 

 

 

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. 

 

Picture55.png

 

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.

 

 

Picture56.png

 

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.

 

 

Picture57.png

 

 

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.

 

 

Picture58.png

 

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.

 

 

Picture59.png

 

 

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

 

 

Picture60.png

 

 

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.

 

 

Picture61.png

 

 

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.

 

Picture62.png

 

 

Ahora rotaremos los datos de forma similar a como lo hicimos con los encabezados usando una Tabulación cruzada.

 

 

Picture63.png

 

 

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.

 

Picture64.png

 

 

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.

 

 

Picture65.png

 

 

Picture66.png

 

 

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.

 

 

Picture67.png

 

 

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. 

 

 

Picture68.png

 

 

El resultado de la unión es el siguiente:

 

 

Picture69.png

 

 

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.

 

 

 

Picture70.png

 

 

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.

 

 

Picture71.png

 

 

Lo que dejará el archivo con el formato correcto. 

 

 

Picture72.png

 

 

De está forma es como descargamos y preparamos el archivo que se encontraba en formato de página web (HTML) con Alteryx.

 

 

Trabajando 11.gif

 

¿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.

 

 

 

 

Hola 7.gif

 

Etiquetas