Domina las herramientas Transpose y CrossTab en Alteryx

No voy a descubrir nada nuevo si digo que en muchas ocasiones, los datos no tienen la estructura que necesitamos, especialmente si utilizamos ficheros obtenidos de páginas web y organismos oficiales.

Un buen ejemplo lo tenemos en esta serie de datos de WorldBank que muestra el número de suscripciones de telefonía móvil por cada 100 habitantes en la mayoría de países del mundo. Podéis también descargaros el fichero csv desde este enlace directo.

Si abrimos el fichero vemos que no cuenta con una estructura de datos adecuada para su análisis y visualización con herramientas modernas de BI.

Estructura del fichero de datos de WorldBank.

¿Por qué la estructura del fichero no es la más adecuada? Porque cada año es una columna distinta, lo que dificulta mucho el análisis temporal de cualquiera de los indicadores, ya que cada año representa en definitiva una medida diferente. Lo ideal en estos casos es tener una columna que indique el año, y otra columna con el valor. Es decir, un fichero de datos con menos columnas, pero muchas más filas.

Muchas veces no es una tarea complicada de hacer en Excel, pero ¿qué ocurre si tenemos ficheros de datos muy grandes? ¿O necesitamos realizar esta tarea cada semana o incluso cada día? ¿O con ficheros de datos que Excel no es capaz de manejar fácilmente?

Aquí es donde Alteryx nos puede ahorrar mucho tiempo y muchas frustraciones ¿Cómo podemos modificar el fichero con Alteryx para que tenga la estructura de datos que necesitamos?

Transpose

En Alteryx, para hacer este tipo de operaciones, tenemos la herramienta Transpose, la cual nos permite tener un control total de como queremos transponer la información para que se ajuste a nuestras necesidades.

Transpose en Alteryx.

Tras leer nuestro fichero de datos en Alteryx y conectar la herramienta Transpose, que podemos encontrar dentro de la categoría Transform nuestro flujo de trabajo no tendrá demasiados secretos. Será algo parecido a esto en nuestro ejemplo:

Workflow inicial.

A continuación haremos click en la herramienta Transpose para configurarla. Y veremos que cuenta con dos áreas principales a configurar: Key Columns (o Key Fields dependiendo de la versión de Alteryx) y Data Columns (o Data Fields).

Key columns y Data columns.

¿Para qué sirve cada sección? Muy sencillo.

  • Key Columns: Aquí debemos de marcar las columnas que queremos mantener con la misma estructura. Es decir aquellas para las que no queremos realizar cambio alguno. En nuestro ejemplo, lo que queremos es tener todos los datos como en la imagen inicial perotransponiendo todas las columnas de años, por lo que seleccionaremos las columnas Country ISO3, Country Name, Indicator Id, Indicator y Subindicator Type como nuestras Key Columns. Aquellas que queremos mantener con la misma estructura. Observa algo muy interesante que hace Alteryx por nosotros: las columnas que seleccionamos como Key, las desmarca automáticamente del listado de Data Columns, que son aquellas columnas que queremos transponer.
  • Data Columns: Aquí seleccionaremos todas las columnas que queramos cambiar la orientación y transponerlas. En nuestro caso, todas las columnas de los años. Vereis al final del todo de este apartado una opción interesante: Dynamic or unknown columns. Si marcamos esta opción, en el caso de que en el futuro el fichero de datos que utilicemos cuente con nuevas columnas, estas automáticamente se incluirán como Data Columns y se transpondrán también. Si no marcamos esta opción, no se incluirán nuevas columnas como Data Columns de forma automática. En este caso puede ser una opción interesante, ya que si el año que viene tengo un nuevo fichero de datos con una columna adicional con información de un nuevo año, Alteryx transpondrá esa columna automáticamente sin tener que hacer ningún cambio en el workflow.

Es decir, y aunque en la imagen no pueda mostrar el listado completo de años, así es como quedaría nuestra configuración de Transpose.

Configuración de Transpose para transponer todos los años.

Si vemos el resultado tras ejecutar el workflow, veremos algo como esto:

Resultado tras Transpose.

Vemos que hemos pasado de un fichero que contaba con más de 60 columnas (una por año) y unas 55.000 filas, a otro fichero con sólo 7 columnas y más de 3 millones de filas. Pero con el que resultará mucho más fácil analizar la evolución de cada uno de los indicadores en el tiempo.

Por último, es importante señalar que si una columna no se marca en ninguna de las dos secciones, ni en Key Columns ni Data Columns, dicha columna se descartará y no seguiremos contando con ella en nuestro flujo de datos. Similar a si la desmarcamos utilizando Select.

El último paso que añadiremos será una herramienta Select a continuación para, primero cambiar el nombre de la columna “name” a “year”. Y además cambiar el tipo de dato de la columna “value” a Double. Para que Alteryx trate los datos en esa columna como datos numéricos ¡Listo! ya tenemos los datos preparados para analizarlos.

CrossTab

Pero, ¿qué ocurre cuando queremos realizar justo la operación inversa? Es decir, queremos crear nuevas columnas a partir de los valores de una columna data. Por ejemplo:

¿Cómo podemos pasar de una estructura como en la derecha de la imagen a una como en la izquierda de la imagen?

De hecho, transponer es sencillo también en Excel (aunque no lo es si tienes un gran volumen de datos), pero esta operación no es sencilla de hacer en Excel salvo que lo hagas manualmente o con una complicada macro.

¿Cómo podemos hacer esta reestructuración en Alteryx? Para ello contamos con la herramienta CrossTab.

CrossTab en Alteryx.

Siguiendo con nuestro ejemplo, imaginemos que queremos darle una nueva estructura a nuestros datos, y contar con una columna para cada uno de los items que tenemos en nuestro fichero. Para ello, vamos a comenzar incluyendo la herramienta CrossTab en nuestro workflow.

Workflow con CrossTab.

Y vamos a hacer click en la herramienta CrossTab para ver su configuración con más detalle. Cuando hacemos click en la herramienta, veremos algo como esto (el formato puede variar si tienes una versión de Alteryx distinta a la más reciente):

Configuración de CrossTab.

Tiene algunas más opciones que Transpose, pero vamos a ver que es bastante sencilla de configurar.

  • Group data by these values: De forma similar a Key Columns en Transpose, seleccionaremos en esta sección los campos que queremos mantener en columnas y para los cuales se agrupará el resto de la información. En nuestro caso, Country ISO3, Country Name, y la nueva columna correspondiente a los años, que se llama Year.
  • Change column headers: En esta opción tenemos que seleccionar la columna de nuestro fichero que queremos que pase a convertirse en distintas columnas para cada uno de los valores de la misma. En nuestro caso será Indicator. Porque lo que queremos es que para cada indicador (cada valor distinto de la columna Indicator) se genere una columna nueva.
  • Values for new columns: Seleccionaremos la columna que tenga los valores con los que completar las columnas nuevas generadas. En nuestro caso, es la columna Value. Que tiene los valores de cada item para cada año y país.
  • Method for aggregating values: Tal vez el punto menos claro las primeras veces que se utiliza CrossTab. Esta opción define como queremos que se agreguen los datos en el caso de que haya más de un valor para los campos que hemos marcado en la sección de group data by these values. En el caso de que haya un único valor, esta opción no tendrá ningún efecto. En base a la imagen de ciudades y variables que pusimos más arriba, si marcamos la ciudad en Group data by these values, esta opción no tendrá ningún efecto. Pero imaginemos que no marcamos ninguna opción en Group data by these values, y señalamos “Sum” en el método de agregación o “Average” obtendríamos distintos resultados como se muestra en la siguiente imagen. Ya que en el primer caso se calcularía la suma de cada variable para todas las ciudades, y en segundo la media de cada variable para las 3 ciudades:
Diferencias entre los métodos de agregación

Con nuestros datos de WorldBank, el método de agregación no debería afectar, porque contamos con una única fila para cada item de cada país y año. Por lo que nuestra configuración de CrossTab será como se ve a continuación:

Configuración de CrossTab con nuestros datos de Worldbank.

Y tras ejectutar el workflow tendríamos unos resultados como los siguientes:

Resultados tras CrossTab.

Como podéis ver, la estructura de nuestro fichero ha cambiado drásticamente respecto al fichero inicial. Teníamos al principio una columna para cada año, y una fila para cada indicador de cada país, y ahora tenemos una fila para cada año de cada país, y una columna para cada indicador.

Podríamos incluir algún paso adicional para terminar de limpiar el nombre de las columnas. Pero en cuanto a estructura de los datos, Alteryx hace realmente sencillo poder coger cualquier fuente de datos y modificar su estructura de la forma que más nos convenga para nuestro análisis.

¿Y la principal ventaja? Que lo hemos hecho en un par de minutos y podríamos repetirlo tantas veces como haga falta sin perder largas horas cambiando las estructuras de un fichero.

¿Habíais usado CrossTab y Transpose antes? ¿Cuánto tiempo de trabajo os habéis ahorrado con estas funciones de Alteryx?