Líneas de referencia dinámicas en base a filtros

Recientemente me han planteado varias preguntas sobre lineas de referencia, concretamente sobre cómo mostrarlas u ocultarlas en determinadas ocasiones. Como por ejemplo permitir que el usuario las muestre u oculte o que sólo se muestren cuando ciertos valores han sido selecciones en un filtro. Así que he decidido escribir un breve artículo sobre como podemos dar mayor dinamismo a nuestras líneas de referencia en base algunos de estos casos.

Líneas de referencia sólo para ciertos valores

Comenzaré por el ejemplo más sencillo. Imaginemos que queremos mostrar una línea de referencia, pero no para todos los valores de la dimensión que estemos utilizando, si no sólo para unos pocos. Por ejemplo, si queremos visualizar las ventas por país, y mostrar una línea de referencia sólo para los países de una determinada región. Supongamos que tenemos el siguiente gráfico:

 

 

Y que queremos mostrar únicamente líneas de referencia para los países de la zona Sur (South), para la cual tenemos un objetivo de ventas de 250.000 (el mismo para los tres países de dicha zona – Italia, España y Portugal). Bastaría con crear un campo calculado como el siguiente:

IIF([Region]=’South’,250000,NULL)

Arrastrar el campo calculado a la pestaña de Detalle (Detail), en este caso particular, calculado como la media, no la suma. Y a continuación añadir la línea de referencia desde el menú de Analytics para cada celda.

Y ya tendríamos nuestra línea de referencia para los países de la región Sur, mientras que el resto de países no cuentan con ninguna línea de referencia. Podríamos incluso eliminar la dimensión Región de la pestaña de color ya que no la necesitamos.

Mostrar u ocultar líneas de referencia

¿Y si lo que queremos es que el usuario pueda elegir si quiere ver o no las líneas de referencia? Podemos hacerlo utilizando un parámetro y un campo calculado.

Si no has utilizado nunca Parámetros en Tableau te recomiendo que eches un vistazo a este post. Pero en definitiva lo que vamos a hacer es crear un parámetro con un valor binario (verdadero / falso, o boolean) que he llamado Reference Lines, y un campo calculado que he llamado Reference Lines (show/hide) como este, que en definitiva lo que hará será mostrar como línea de referencia el valor de la suma de ventas con un incremento del 10%:

IIF([Reference lines],SUM([Sales])*1.10,NULL)

En el siguiente video puedes ver la funcionalidad de las líneas de referencia creadas con este método:

Líneas de referencia para un único y exclusivo valor

¿Y qué ocurre cuando queremos mostrar líneas de referencia para un valor concreto de una dimensión utilizando un filtro? Supongamos que tenemos una medida en nuestra base de datos que se llama Target Spain, la cual indica el target de ventas para España. En base a los ejemplos anteriores, podríamos de primeras optar por crear un campo calculado que nos devuelva dicha medida cuando seleccionamos España, como por ejemplo: IIF([Country]=’Spain’,[Target Spain],NULL).

El problema con dicho campo calculado, es que si tenemos un filtro en el que podemos seleccionar más de un país, el valor de las ventas será la suma de todos los países seleccionados, pero el valor del objetivo de ventas será únicamente el de España, pudiendo dar lugar a confusión.

Podemos solucionar esto modificando ligeramente el campo calculado, de forma que nos devuelva los valores única y exclusivamente cuando sólo España, y ningún otro país adicional, esté seleccionado.

¿Cómo? Muy sencillo. Con la función COUNTD para contar el número de países distintos en el detalle de nuestra visualización. Eso si, al tratarse de una función agregada, tendremos que agregar también la medida Target Spain y la dimensión Country:

IIF(ATTR([Country])=’Spain’ AND COUNTD([Country])=1,SUM([Target Spain]),NULL)

Así, la medida Target Spain (la cual utilizaremos como línea de referencia) sólo aparecerá cuando se haya seleccionado España y el número de países de nuestra visualización sea igual a 1. Es decir, únicamente se haya seleccionado un país, y este ha de ser el que hemos indicado al inicio de la condición.

Sin líneas de referencia al seleccionar dos países:

Con líneas de referencia cuando seleccionamos sólo España:

El conector a archivos PDF de Tableau 10.3

Artículo publicado originalmente en la web the The Information Lab.

Si estás al tanto de las novedades de Tableau en futuras versions, probablemente conoces el conector a archivos PDF que estará disponible en la versión 10.3 de Tableau junto a otra serie de novedades que puedes consultar en esta web.

Personalmente, el conector a PDF es una de las novedades que más interés me han despertado, especialmente porque he sufrido en anteriores trabajos el calvario que supone extraer datos de archivos PDF. Así que estaba deseando poder ver cómo funciona este nuevo conector, sus posibilidades y cómo de preciso es. Si estás interesado en probar funcionalidades de futuras versions de Tableau, te recomiendo registrarte en el programa de Pre-Release y ser de los primeros en conocer futuras novedades de Tableau.

Cómo conectarse a archivos PDF

Una vez has instalado la versión beta de Tableau 10.3, conectarse a archivos PDF es muy sencillo, ya que Tableau ha añadido dicho conector como una opción adicional en la ventana principal bajo la sección «conectar a un archivo».

Tan sólo tenemos que hacer click en la opción PDF File y aparecerá una nueva ventana donde podremos seleccionar el archivo PDF del que queremos extraer datos. A modo de ejemplo, realicé una rápida busqueda en Google the informes en PDF y encontré este informe sobre competitividad del Foro Económico Mundial que parecía un ejemplo perfecto para probar el nuevo conector. Una vez que hemos seleccionado el archivo al que queremos conectarnos, aparecerá una nueva ventana donde tendremos que especificar si queremos escanear todas las páginas del documento, una única página o un rango de páginas.

Escanear una tabla de datos

Este PDF en particular cuenta con muchas páginas de texto, así que tras un primer vistazo al PDF voy a conectarme a una única página, concretamente a la página 22 que es la primera que contiene una tabla de datos. Concretamente se trata de un listado de países, su relación con la UE y PIB:

En caso de que hayamos cometido un error y no nos hayamos conectado a la página correcta del documento, siempre podemos hacer click derecho en la conexión y seleccionar Rescan PDF file… para elegir una página distinta del documento. Lo que hace muy sencillo probar el aspecto que tendrán en Tableau diferentes páginas de un documento en PDF.

Aún tratándose en este ejemplo concreto de una tabla de datos bastante sencilla, es una grata sorpresa ver lo bien que Tableau identifica y reconoce todos los datos de la tabla, sin mostrar el título de la tabla o el texto que aparece en la parte inferior de la misma. El único pequeño problema que destacaría con esta tabla en concreto es que las cabeceras no las identifica correctamente y que incluye dos filas únicamente con el texto «EU Candidate countries» y «Comparator countries».

Pero es precisamente con este conector en concreto donde la función Data Interpreter de Tableau es nuestro mejor aliado. Basta con hacer click en la opción Use Data Interperter y Tableau identifica que la primera fila de nuestra tabla son las cabeceras de cada una de las columnas. Ahora sólo hay que ecidir qué hacer con esas categorías que Tableau lee como parte de la tabla y que no contienen más información. Es aquí cuando los filtros de base de datos pueden ayudarnos a terminar de limpiar la tabla para que quede totalmente a nuestro gusto.

Si estuviera interesado en filtrar esas dos columnas que he mencionado, bastaría con añadir un filtro de base de datos que excluya todos los registros con un valor nulo en el campo Status/Relationship with the EU. Si por el contrario prefiero filtrar todos los países de esas dos categorías concretas y analizar sólo países de la UE, podría excluir todos los registros que tengan un valor nulo en el campo EU Code. En este caso particular, quiero analizar sólo países de la UE, así que voy a optar por la segunda opción.

Ahora podemos empezar a visualizar los datos, por ejemplo ver el PIB por país, colorear las barras según el año en el que cada país se unió a la UE.

O tal vez estamos interesados en añadir una dimensión adicional y separar los países en base a si son miembros de la UE o también cuentan con el Euro como moneda nacional.

Se acabó lo de copiar manualmente datos de archivos PDF a ficheros Excel!

Escanear páginas con texto y datos

¿Pero cómo se comporta el conector a PDF cuando escaneamos páginas que contienen texto además de tablas de datos? Vamos a ver que ocurre cuando nos conectamos a la página 32 del documento, la cual contiene un 90% texto y cuenta con una pequeña tabla de datos.

Cuando nos conectamos a la página 32, Tableau identifica dos tablas, la segunda corresponde a la sección de notas al final de la página (no estamos interesados en visualizar eso) así que nos conectaremos a la primera tabla.

De nuevo los datos no son 100% correctos, pero es bastante preciso. Necesitamos filtrar ciertos valores y un par de ajustes adicionales para obtener la tabla tal como la queremos. En este caso vamos a desmarcar la opción que determina que la primera fila contiene el nombre de las columnas y a continuación las renombraremos. Ocultamos la última columna ya que no contiene ninguna información de utilidad, y por últimos filtramos las filas que contienen valores nulos. Este es el resultado:

Datos preparados y listos para visualizarlos en Tableau. Con el beneficio adicional de que puedo utilizar cada conexión a una hoja de un archivo PDF como una base de datos independiente y puedo crear dashboards con tantas páginas de uno o varios documentos PDF distintos. Y reduciendo de forma importante el tiempo dedicado a copiar y pegar manualmente datos de archivos PDF a hojas de Excel.

Makeover Monday semanas 7 y 8

Ayer se publicaron los datos correspondientes a la semana 22 de Makeover Monday y voy con bastante retraso. Pero aqui van las visualizaciones para la semana 7 y la semana 8.

Semana 7

La semana 7 era una visualización sobre el gasto en EEUU en el día de San Valentín. Siguiendo con la idea de crear Makeover Monday sencillas mostrando la máxima información posible con tan sólo una hoja de Tableau, decidí incluir un fondo algo acorde con la temática de la visualización, y usar sencillos gráficos de barras para mostrar la evolución de gasto y el porcentaje de gente que realiza algún gasto tanto por tipo de regalo como para la persona en que se gasta el dinero. Añadiendo un filtro que permite cambiar la dimensión del eje horizontal. Haz click en la imagen para ver el dashboard interactivo.

Semana 8

La semana 8 utilizaba datos de Eurostat sobre la producción y el precio de patatas en distintos países del mundo. La visualización original de Eurostat, que se puede consultar en este enlace es bastante pobre, Decidí olvidarme de los valores absolutos de cada una de las variables y optar por un gráfico de líneas que permita ver la evolución del ranking por países a lo largo del tiempo. No es una visualización complicada, tan sólo cuenta con un par de parámetros para elegir entre la medida  visualizar y el número de países a mostrar, y cuenta con un doble eje en filas que muestra un cálculo de tabla utilizando la función Rank Unique y el parámetro que permite elegir entre cada una de las medidas:

IF [Select Measure]=»1″ THEN RANK_UNIQUE(sum([Area in 1000ha]))
ELSEIF [Select Measure]=»2″ THEN RANK_UNIQUE(sum([Harvested production in 1000t]))
ELSEIF [Select Measure]=»3″ THEN RANK_UNIQUE(sum([Main area (1000 ha)]))
ELSEIF [Select Measure]=»4″ THEN RANK_UNIQUE(sum([Main area (1000 ha)]))
ELSEIF [Select Measure]=»5″ THEN RANK_UNIQUE(sum([EUR per 100 kg]))

END

Ya disponible la Beta de Tableau 10.3

Hace muy poco que salió Tableau 10.2 y ya está disponible la versión beta de Tableau 10.3 con varias mejoras y nuevas funcionalidades más que interesantes, entre las que que destacan:

  • Alertas basadas en datos en Tableau Server, a través de las cuales podemos definir umbrales para valores en un dashboard y recibir un correo electrónico cuando se rebase dicho umbral.
  • Conector para PDF: Permite leer directamente datos de tablas en archivos PDF.
  • Nuevos conectores: Entre los que destacan Dropbox, OneDrive y MongoDB.
  • Seleccionar y destacar desde descripciones emergentes: Podremos seleccionar categorias dentro de las tooltips para resaltas dichas categorías en una visualización.
  • Prefiltrar la fecha más reciente: Filtrar automáticamente visualiaciones a la fecha más reciente disponible en la base de datos.

Puedes consultar todas las novedades y unirte a la beta a través de este enlace: https://www.tableau.com/es-es/coming-soon/10.3

IronViz #1 2017: Conectando Tableau a Shapefiles

Primer concurso IronViz del año, y a diferencia de los del año pasado donde cada uno tuvo una temática diferente – comida, música y política – esta vez la temática concreta de la visualización ha sido libre, con el único requisito de utilizar una de las nuevas funcionalidades de Tableau 10.2: la conexión a archivos geoespaciales (.shp, .kml, .geojson…).

El primer reto, y tal vez el más complicado, fue encontrar archivos geoespaciales Y datos adicionales para aportar valor a la visualización. En este sentido, mi primera idea era utilizar los archivos disponibles en la página web http://www.iucnredlist.org/ sobre especies amenazadas. El tema me parecía súmamente interesante, pero aparte de los mapas, la página web u otras páginas que he consultado no disponen de datos que sustenten la visualización. Varios intentos más de buscar archivos espaciales + datos de apoyo corrieron la misma suerte, así que decidí cambiar el enfoque de la visualización e ir hacia algo de primeras más sencillo en cuanto a la búsqueda de información, pero con el suficiente nivel de detalle como para que resultara interesante.

Así que finalmente me decidí por centrarme en un tema en el que supiera seguro que podría encontrar shapefiles y datos que aportasen valor adicional. El Instituto de Estadística de la Comunidad de Madrid permite la descarga de shapefiles con las delimitaciones territoriales de toda la Comunidad Autónoma, y la web del Ayuntamiento de Madrid ofrece información demográfico y de estructura de la población a nivel tanto de distrito y de barrio ¿Por qué no combinar ambas fuentes y crear una visualización de Madrid distrito a distrito y barrio a barrio?

Tras decidir el tema vino el segundo reto, y es la general mala estructura de archivos de datos en España. La información por barrio viene en un archivo diferente para cada distrito. Es decir en total 21 archivos con el siguiente aspecto:

Así que lo primero de todo había que hacer una aburrida labor de organización y limpieza de los diferentes archivos. La cual realicé parcialmente de forma manual y en parte utilizando Alteryx. Además, decidí que no era sólo interesante mostrar la información barrio a barrio, sino permitir al usuario cambiar la visualización para ver toda la información por barrio o distrito cambiando entre ambas vistas a través de un parámetro, con lo cual decidí utilizar un segundo archivo geoespacial y incluirlo como una conexión adicional. Este es el aspecto de las distintas bases de datos que he utilizado y como las he unido en Tableau:

Tercer reto: problemas en la unión de los datos generales con el shapefile de distritos debido a varios acentos en el nombre del distrito. Por alguna razón Tableau no identificaba correctamente algunos caracteres (cuando normalmente si lo hace, tal vez sea un problema sólo con shapefiles que se solucione en el futuro). Así que en lugar de utilizar el nombre del distrito, y ante la falta de un identificador numérico en el archivo global de datos para cada distrito, utilicé un cálculo en la unión para crear dicho campo con la función CASE:

Debido a la utilización de distintos archivos de datos de la web del Ayuntamiento de Madrid y al unir toda la información sin poder dedicar demasiado tiempo a la estructura del archivo de datos que era más adecuada, la visualización contiene multitud de campos calculados para obtener en cada caso la información necesaria para cada gráfico.

Tal vez la parte que pueda resultar algo más compleja es la central, con las pirámides de población. Que cuenta con un filtro contextual para separar los distritos y barrios del este de los del oeste. Dos campos calculados para separar de forma dinámica las pirámides de población utilizando small multiples que son los siguientes:

Column = (INDEX()-1)%ROUND(SQRT(SIZE()))                               Row = INT((INDEX()-1)/ROUND(SQRT(SIZE())))

Ambos además calculados en base a un campo calculado adicional enlazado a un parámetro para seleccionar entre distritos o barrios. He utilizado además un cálculo LOD para fijar la distribución de la población total del municipio de Madrid y mostrarla a modo de referencia utilizando líneas. De todas formas toda la visualización se puede descargar desde Tableau Public.

 

Este es el resultado final. Haz click en la imagen para ver la versión dinámica.

Marcadores (bookmarks) en Tableau

La entrada de hoy va dedicada especialmente a todas las personas que alguna vez han creado algo en Tableau y al querer repetirlo tiempo después han perdido una cantidad significativa de tiempo buscando el workbook correspondiente. Al igual que cualquier navegador de Internet, Tableau cuenta también con sus propios marcadores que podemos utilizar para marcar hojas concretas que queramos tener a mano y acceder a ellas rápidamente.

La semana pasada Paul Banoub (Tableau Zen Master y gestor del Tableau Centre of Excellence en UBS) me pidió enseñar 5 rápidos consejos durante el Tableau User Group de Londres. Posteriormente bastantes personas me dijeron que no conocían los marcadores de Tableau, así que he decidido escribir brevemente sobre el tema.

Cómo usar los marcadores de Tableau

Imaginemos que hemos creado este gráfico de donut (lo se, seguramente no la mejor elección en este caso, pero era por elegir un gráfico de los menos habituales) y queremos tenerlo lo más a mano posible ya que en nuestra empresa les encanta utilizarlo y sabemos que lo crearemos habitualmente.

En vez de tener que buscar siempre la carpeta donde hemos guardado el workbook con dicho gráfico, puedo utilizar los marcadores (bookmarks) de Tableau. Para salvar un marcados basta con ir al menú Window > Bookmark > Create Bookmark y especificar el nombre del marcador. (Ventana > Marcador > Crear marcador si estás utilizando Tableau en Español).


Tableau guardará la hoja en la que estamos en un archivo con extensión .tbm por defecto en la carpeta del repositorio de Tableau. Podemos además organizar dicha carpeta como haríamos con cualquier carpeta de documentos o elegir otra carpeta distinta al repositorio de Tableau. Eso sí, tened en cuenta que si seleccionáis una carpeta distinta los marcadores no aparecerán en el menú de Tableau, tendremos que acceder a ellos desde el explorador de archivos de Windows o Mac.

Una vez tenemos nuestro marcador creado, basta con hacer de nuevo click en dicho menú para acceder rápidamente a la hoja que hemos guardado.

Makeover Monday Semana 4 y 5

La semana pasada tuve bastante jaleo y no tuve tiempo ni de escribir el post sobre la semana 4 de Makeover Monday, así que hoy publicaré por aquí las dos a la vez: semana 4 y semana 5.

Semana 4

La semana 4 trataba sobre gasto realizado en Nueva Zelanda el turismo nacional e internacional. Hice bastantes análisis distintos, pero al final me decanté por un sencillo análiss comparando mes a mes el gasto entre el turismo nacional e internacional en cada una de las regiones de Nueva Zelanda y pudiendo filtrar el gráfico por año concreto o visualizar la media durante todo el periodo (2008 a 2016).

Se trata de una visualización muy sencilla. Lo más interesante, al menos en mi opinión, es el uso de la función RANDOM en columnas, que es la forma de distribuir cada uno de los puntos en el eje horizontal dentro de cada mes. Es una función muy útil para visualizar más fácilmente muchos puntos en un mismo gráfico. Ya que no sólo se suele ganar en estética, sino que también ayuda a localizar puntos de datos que estarían de lo contrario demasiado superpuestos unos sobre otros.

Semana 5

Para la semana 5 la visualización era mucho más sencilla. De hecho si veis el archivo de datos para esta semana en MakeoverMonday.co.uk, se trata de un fichero con únicamente 3 columnas y 7 filas. Los gráficos originales eran dos gráficos de tarta que no ayudanaban mucho a ver las diferencias entre cada una de las medidas ni entre cada uno de los países.

Al tratarse de una base de datos tan sencilla me decidí por una visualización también muy sencilla pero que resulte más fácil de seguir. Para ello opté por este Slope Graph (no se si tiene traducción este tipo de gráfico en castellano) y quise además practicar el método de Andy Kriebel para añadir líneas verticales. La verdad es que para lo sencillo que es a la vista, llevó un poco más de tiempo, pero creo que el resultado merece la pena sin duda.

Podéis además hacer click en cada una de las imágenes para acceder a la versión dinámica en Tableau Public.

Geocodificar direcciones con la API de Google Maps y Alteryx

El análisis espacial es uno de los grandes puntos fuertes de Alteryx (y uno de mis favoritos). Pero no siempre disponemos de la latitud y longitud de los datos para visualizarlos en un mapa. Así que vamos a ver como geocodificar direcciones utilizando la API de Google Maps y Alteryx, Y transformar direcciones en puntos geográficos con latitud y longitud.

Las direcciones postales

Para este ejemplo voy a utilizar las direcciones de las 32 comisarias de Madrid con Oficina de Denuncias y Atención al Ciudadano. Las direcciones las comisarias las he descargado desde la página web de la policía en este enlace. Y he creado un fichero excel con el nombre de la comisaria y la dirección que tiene este aspecto:

De poco nos sirven las direcciones postales si no podemos posicionarlas en un mapa para poder realizar cualquier análisis que necesitemos. Así que pasemos a informarnos algo más de la API de Google Maps para geocodificar direcciones postales.

La API de Google Maps

Lo que queremos hacer es como hemos dicho antes, transformar las direcciones postales en coordenadas geográficas. Es decir, geocodificarlas (geocoding en inglés). Y la API de Google Maps ofrece este servicio que podéis consultar en esta página web.

Para ello debemos hacer una llamada a la API con la siguiente estructura:

https://maps.googleapis.com/maps/api/geocode/output?parameters

El output es el formato en el que queremos que la API nos devuelva los datos, que puede ser json o xml.

Los parametros (parameters) obligatorios en una solicitud de geocodificación son la dirección (address) o componentes (components) y la key, es decir la llave que utilizaremos para identificarnos y realizar la solicitud. En el anterior enlace podéis consultar todo con mayor detalle, pero para nuestro ejemplo, lo que necesitamos es hacer una llamada como esta:

https://maps.googleapis.com/maps/api/geocode/json?address=Avda.+de+los+Poblados+51+28047+Madrid&components=country:ES&key=MI_API

Como se puede ver la dirección que queremos geocodificar está separada por «+» no por espacios. Hemos añadido el componente country:ES (de España), para acotar la geocodificación a España y después de key= debemos indicar nuestro código de la API.

¿Cómo obtener la clave (key)?

Es bastante sencillo, se pueden seguir los sencillos pasos que se indican en este enlace. Pero no lleva más de un par de minutos. Podemos además restringuir el uso de la API a una IP concreta por ejemplo para asegurarnos de que nadie hace un uso indebido de la misma. La forma más sencilla de crearla es a través de dicho enlace, pero también podemos entrar en la Consola de Desarrolladores y solicitar la clave desde ahí.

¿Pero tengo que pagar algo por el servicio?

El servicio es gratuito hasta un límite de uso. Tal como se indica en este otro enlace, se puede realizar sin ningún tipo de restricción hasta 2.500 solicitudes al día y 50 solicitudes por segundo.

Si necesitamos realizar un mayor uso y no podemos esperar al día siguiente, es entonces cuando podemos habilitar la opción de pago. La opción de pago permite alcanzar las 100.000 solicitudes al día a un precio de 0.50$ por cada 1.000 solicitudes adicionales.

Workflow en Alteryx

Una vez tenemos nuestra clave para utilizar la API, ya podemos empezar a trabajar con Alteryx. A continuación veremos paso por paso el proceso, pero en definitiva nos bastará con 10 herramientas muy sencillas para obtener nuestro resultado. Este es el aspecto global del workflow:

Y para los impacientes, este es el resultado que obtendríamos, primero en nuestro fichero inicial;

Ahora podríamos utilizar este fichero con la latitud y la longitud en Tableau, o también visualizarlo directamente en Alteryx:

geocodificacion con Alteryx y Google Maps API

geocodificacion con Alteryx y Google Maps API

Vamos a ver el workflow paso a paso.

Inputs, primera fórmulas y Append Fields

Son las primeras 5 herramientas que utilizaremos para dar forma a las solicitudes que realizaremos a la API con la posterior herramienta Download.

La primera herramienta Input es simplemente para leer el fichero excel con las direcciones, por lo que no tiene mayor secreto. La segunda herramienta Input es un Input de texto en el que en la primera columna, que he llamado API, he pegado la parte inicial de la solicitud a la API que vimos anteriormente: https://maps.googleapis.com/maps/api/geocode/json?address=

La segunda columna la he llamado Key, y en ella he pegado mi clave de la API.

En la primera fórmula tan sólo he utilizado la función REPLACE para sustituir cualquier espacio en el campo de Dirección por un +. Ya que es el formato que Google nos indica en el que se debe realizar la solicitud.

A continuación, la herramienta Append Fields nos sirve para pegar la API y la Key del Input de texto, a cada registro de nuestro listado de comisarias del input principal.

La segunda fórmula la he utilizado para generar la query, es decir, la solicitud concreta para cada dirección. De forma que en una nueva columna del fichero llamada «Query» tenga la estructura completa necesaria con este formato: API seguido de la DIRECCION, seguido de el COMPONENTE CON EL PAÍS y seguido por último de la KEY.

Es decir, se trata de generar una única línea de texto como esta:

https://maps.googleapis.com/maps/api/geocode/json?address=Avda.+de+los+Poblados+51+28047+Madrid&components=country:ES&key=MI_API

Y que cada línea tenga la dirección concreta de la comisaria.

Download, JSON Parse y filtrar la latitud y la longitd

Aunque dos de estas tres herramientas tal vez no sean tan habituales, vamos a ver que son muy sencillas de utilizar.

En la herramienta Download tenemos que configurar dos cosas. La primera, indicar en la pestaña Basic, y en el apartado de URL el campo de nuestro fichero que contiene la URL que queremos utilizar. En nuestro caso hemos creado dicho campo justo en el apartado anterior: Query y queremos que el resultado, es decir el Output, sea una cadena de texto en un campo adicional.

En segundo lugar, en la pestaña Payload asegurarnos que en la HTTP Action está seleccionado GET. El resto de opciones podemos dejarlas tal como aparecen por defecto.

Eso es todo con la herramienta Download. La siguiente herramienta, JSON Parse es aún más sencilla. Como en la solicitud a la API hemos indicado que queremos la respuesta en formato JSON utilizamos esta herramienta para preparar automáticamente el resultado de la API. Primero indicamos en el menú desplegable el campo que contiene el formato JSON, que en este caso es un nuevo campo que genera la herramienta Download llamado «DownloadData». Podemos indicar que el resultado esté en un único campo de texto o que añada varios campos según el tipo de datos: valores, texto, etc. Yo he indicado esta segunda opción aunque también podríamos hacerlo con la primera.

A continuación está la herramienta Filtro. Pero ahora es un buen momento para ver el resultado que estamos obteniendo hasta este punto:

Como Alteryx nos indica, tenemos ahora 1.225 registros. Muchísimos más que las 32 comisarias iniciales ¿Por qué? Porque como se puede ver en la imagen de arriba, para cada comisaria está generando muchas filas con distinta información. Tenemos 7 componentes en total con el número de la calle, el nombre de la calle y distintos niveles de información administrativa (municipio, provincia, comunidad autónoma y país), código postal, la dirección completa formateada y varios campos que incluyen latitud y longitud. Los que he resaltado en azul son los que nos interesan en este ejemplo, los demás podemos filtrarlos. Y es precisamente lo que vamos a hacer con la herramienta de filtro, filtrar aquellos valores del campo JSON_Name que no sean la localización de latitud ni longitud.

De este modo ahora tendremos 64 registros. 2 por cada comisaria con la primera fila con los datos de latitud y la segunda con los de longitud. Ya sólo queda por ver 3 herramientas más.

Cross Tab, Select y Create Points

Cross Tab nos permite realizar la función contraria a la que que realiza Transpose. Es decir, permite cambiar la orientación del fichero de datos y pasar los valores que se encuentran en una sola columna a varias columnas. Lo que tenemos que hacer es seleccionar en la parte superior que dice «Group Data by there values» (agrupar datos en estos valores) y marcar ahí los campos que queremos mantener fijos en filas. En este caso el nombre de la comisaría, la dirección, y podríamos mantener también los campos API, Key, Query y Download Headers por si quisiéramos consultaros posteriormente.

A continuación indicamos el campo que queremos que forme nuevas cabeceras, en nuestro caso JSON_Name. Ya que JSON_Name indica si el valor que tenmos en JSON_ValueFloat es la latitud o la longitud, y queremos cada uno en una columna. Y en el valor para las nuevas columnas indicamos el campo que contiene el valor. En nuestro caso JSON_ValueFloat.

Este es el resultado de utilizar Cross Tab.

¡Perfecto! Ahora podemos utilizar la herramienta Select para cambiar el nombre a esos nuevos campos por Latitude y Longitude por ejemplo.

Y por último podemos utilizar la herramienta Create Points para así poder visualizar las comisarias en el mapa que vimos al principio. En esta herramienta basta con indicar el campo correspondiente a la latitud y el correspondiente a la longitud e indicar que son Floating Point. Ya que es el formato en el que Google devuelve los valores.

Ahora ya tenemos un workflow que podemos utilizar las veces que queramos para convertir cualquier dirección en latitud y longitud. Y poder  realizar análiss adicionales en Alteryx o exportar los resultados a Tableau.