<< Back

Cómo obtener tasas de cambio de divisas con Alteryx y el Banco Central Europeo

¿Has tenido que trabajar alguna vez con cambios de divisas, pero has acabado dedicando horas a revisar tasas en distintas webs y para distintos días sin saber cuál utilizar?

Una posible solución es utilizar las tasas oficiales de cambio del Banco Central Europeo que se pueden encontrar en su página web: https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html

¿Pero qué ocurre si quieremos consultar la tasa de cambio en una fecha determinada o en un periodo concreto? Si sólo es una única consulta, puede resultar más o menos sencillo, pero puede llevar muchísimo tiempo si el número de fechas o monedas a consultar aumenta.

En estos casos, podemos sacar provecho de la facilidad y flexibilidad de Alteryx y utilizar la RESTful API del BCE ( https://sdw-wsrest.ecb.europa.eu/help/) para obtener los datos que queramos de forma dinámica, rápida y segura.

¿Cómo hacer una consulta a una API con Alteryx?

Imaginemos que queremos consultar la tasa de cambio de un día concreto, por ejemplo el lunes 13 de enero de 2020, de libras esterlinas a euros. Siguiendo los ejemplos indicados en la documentación a través del enlace anterior de la RESTful API, podríamos hacer una consulta a la siguiente URL:

https://sdw-wsrest.ecb.europa.eu/service/data/EXR/D.GBP.EUR.SP00.A?startPeriod=2020-01-13&endPeriod=2020-01-13

Lo que dicha URL está haciendo es consultar el servicio (service) de datos (data) del BCE. Más en concreto, la serie de cambio de divisas (EXR) y de forma específica, la tasa de cambio diaria (D) de libras (GBP) a euros (EUR). Y en concreto, la media (A) entre la fecha inicial (startPeriod) del 13 de enero de 2020 y la misma fecha final (endPeriod). Es decir, estamos consultando la tasa media de cambio sólo en dicha fecha de GBP a EUR.

Si pegamos esa misma URL en nuestro navegador, descargaremos un archivo XML con este aspecto:

Respuesta en XML de la RESTful API del BCE.

Echando un vistazo al fichero ¿qué información nos interesa? Realmente la única que utilizaremos en este caso es la disponible en las filas 33 y 34. Es decir, la fecha consultada y el valor de la tasa de cambio en dicha fecha: 0.8576. Pero ¿cómo hacemos esta misma consulta en Alteryx?

Primero utilizaremos una herramienta Text Input para símplemente escribir la fecha que queremos consultar: 2019-01-13.

Text Input.
Configuración del Text Input.

Segundo, utilizaremos una Fórmula para crear la URL que queremos consultar (yo he llamado al nuevo campo creado BCE_query).

Fórmula.
Configuración de la fórmula para crear la URL y consultar la tasa de cambio en la fecha del input.

Tercero, necesitaremos usar la herramienta Download para descargar la respuesta de dicha URL que hemos generado con la fórmula. En este caso, en la herramienta Download sólamente tenemos que indicar que queremos conectarnos a la URL indicada en el campo creado anteriormente BCE_query y obtener el output como una cadena de texto.

Download.
Configuración de Download.

El cuarto paso es limpiar el fichero XML. Como hemos visto anteriormente, de toda la información que obtenemos del servicio web del BCE, en este caso particular sólo nos interesa aquella que se encuentra entre las etiquetas <generic:Obs> y </generic:Obs>. Para estructurar el fichero XML utilizaremos la herramienta Parse XML y especificaremos que los datos que queremos analizar y estructurar son los elementos de la etiqueta Obs de la columna DownloadData generada por la herramienta Download, que es la que cuenta con toda la información del archivo XML en una cadena de texto.

XML Parse.
Configuración de XML Parse.

Tras estos cuatro pasos, nuestro workflow debería ser algo parecido a este:

Y la ventana de resultados debería mostrarnos lo siguiente:

Vemos que ahora mismo contamos con más columnas de las que realmente nos intersa, porque el XML Parse está analizando y estructurando algunos campos adicionales que no necesitamos. Así que en el quinto paso utilizaremos un Select para quedarnos sólo con las columnas que nos interesan: nuestra columna inicial con la fecha, y las columnas ObsDimension_Value y ObsValue_value que contienen la fecha que devuelve el servicio web del BCE y la tasa de cambio de dicha fecha. Eso sí, cambiaremos también el nombre de dichas columnas para darles un nombre más relevante.

Select
Configuración del Select.

¡Listo! Tenemos el resultado de la tasa de cambio entre las dos divisas para la fecha seleccionada. Pero… ¿Y si no tengo una sóla fecha? Supongamos que tengo un fichero con miles de ventas de mi empresa, y quiero conocer la tasa de cambio para la fecha de compra de cada una de las transacciones, para así posteriormente poder calcular el precio en euros de cada transacción, pero utilizando a la tasa de cambio de la fecha de compra.

Muy fácil, sólo tengo que eliminar el Text Input que había incluido inicialmente y sustituirlo por mi fichero de ventas. Y en la fórmula, modificarla ligeramente para hacer referencia al campo de fecha que quiero utilizar (Order Date en mi ejemplo). Y volver a ejecutar el workflow.

Y ya tenemos la tasa de cambio entre las dos divisas para cada una de las fechas de nuestro fichero, siendo además tasas oficiales del BCE, desde la misma fuente oficial y sin errores.

Algunas cosas a tener en cuenta y que podrían mejorar el workflow y el rendimiento ligeramente son las siguientes:

  1. Como se puede observar, para la fecha 2018-08-12 no se obtiene resultados. Esto se debe a que no hay datos oficiales de tasas de cambio entre divisas los domingos (el 12 de agosto de 2018 fue domingo) ni los sábados ni días festivos. Esto implica que recibiremos varios avisos (warnings) en Alteryx indicando que para ciertas fechas no se han podido obtener datos. Una posible mejora del workflow sería analizar cada fecha, de forma que si se trata de un sábado o domingo, no consultemos la tasa de cambio de dicho día, sino un día anterior (si se trata de un sábado) o dos días anteriores (si se trata de un domingo).
  2. Ahora mismo estamos enviando una solicitud al servicio web del BCE para cada fila de datos. Pero hay muchas fechas que se repiten, por lo que una forma de reducir el número de consultas sería agregar primero con un Summarize o utilizar Unique para obtener un listado único de fechas de nuestro fichero y reducir el número de consultas.
  3. Por último, podríamos multiplicar un valor de interés (ventas por ejemplo) por la tasa de cambio obtenida. O incluso realizar dicho cálculo sólamente para las filas de datos que sepamos que tengan una divisa diferente (ventas del Reino Unido por ejemplo). Y así asegurarnos de que nuestras ventas se analizan todas en la misma divisa, utilizando tasas de cambio oficiales en la fecha de venta.
  4. Otra opción sería convertir este workflow en una macro o App y distribuirla en la empresa utilizando Alteryx Server. De forma que cualquier usuario pudiese cargar un fichero de datos y convertir automáticamente distintas divisas.

Ahora, en lugar de consultar distintas fuentes de datos y tener que dedicar horas a realizar cambios de divisas manualmente podemos automatizar este proceso, evitar errores, utilizar una única fuente oficial para todos los cambios de divisas que necesitamos hacer en la empresa ¡Y todo en pocos minutos y con tan sólo cuatro herramientas de Alteryx!

Workflow final.

Leave a Reply

Your email address will not be published. Required fields are marked *