Tres en uno: Unificar datos de distintas fuentes

Cada vez existen más herramientas para poder montar dashboards de forma rápida y sencilla pero… ¿Cómo podemos unificar datos que provienen de diferentes fuentes?

En este post vamos a montar un sencillo cuadro de mando combinando información relevante para el negocio desde orígenes distintos.

Definiendo nuestros objetivos

Planteemos primero a qué nos queremos dedicar: Somos Datola Merchandising y comercializamos camisetas originales online (yo en realidad quería vender riñoneras, pero no hay muchos datos en la red sobre ventas de riñoneras ☹).

Para la toma de decisiones a nivel estratégico nos han pedido un dashboard que recoja 3 cosas:

  1. La información sobre tráfico y transacciones en nuestro ecommerce, que ya tenemos en Google Analytics.
  2. La cotización diaria de la empresa en bolsa y el precio medio de las camisetas de la competencia.
  3. Los resultados de búsqueda de camisetas de los usuarios en el buscador de Google.

Para ello, vamos a quedarnos en el entorno de Google. Usaremos BigQuery como base para unificar los datos y transformar la información y Data Studio como herramienta de visualización.

Volcando los datos de Google Analytics a Data Studio

El primer punto es sencillo. Podemos conectar directamente Google Analytics a Data Studio o si ya tenemos los datos de GA volcados a BigQuery, conectar directamente BQ a Data Studio:

Conectores de GA y BQ a DS

Con esto ya tendremos toda la información recogida por la analítica de la web lista para dibujarse en el Data Studio.

Data Studio con Visitas, Transacciones e Ingresos

Scraping de datos públicos

Para poder obtener la cotización, o cualquier otro dato público en cualquier tabla de internet, podemos hacer un scraping básico con una hoja de Google Sheets.

Google sheets, ejemplo de como usar IMPORTHTML para obtener datos

Sólo tenemos que indicar la página de la que queremos obtener la información en la función «IMPORTHTML»

Podemos recuperar el precio al que tiene sus camisetas originales la competencia usando «IMPORTXML»

Google sheets, ejemplo de como usar IMPORTXML para obtener datos

El primer argumento de la función es la página de la que queremos scrapear el precio. El segundo argumento es la consulta xpath donde está el dato.

Volcando datos de Google Sheets a Big Query

Bien, tenemos los datos en Google Sheets y podríamos caer en la tentación de llevarlos directamente a Data Studio. Está bien si el dato no necesita transformación y no lo vamos a usar con otros datos, pero si no es así, lo interesante es pasar por BigQuery para limpiarlo, transformarlo y definir kpis mezclándolo con otras métricas.

Tal vez ahora no hagamos operaciones muy complejas y sólo queramos presentar la información de diferentes fuentes, pero en un futuro puede interesarnos operar con esos datos cruzados y diseñar nuevos indicadores para la marcha del negocio (hay mucha información que picar para liderar el competitivo mercado de las camisetas con mensajes chistosos).

Creamos por tanto una tabla en BigQuery a partir de la información que tenemos en Google Sheets:

Mostrando el botón de añadir tabla en Big Query
Ejemplo de cómo crear una tabla en Big Query con Datos de Google Sheets

¡Estupendo! Podemos jugar un poco con los datos. Por ejemplo, si queremos calcular el precio medio de las camisetas de nuestros competidores sólo tenemos que escribir unas líneas en SQL.

SELECT 
safe_divide(SUM(columnaPrecio), COUNT(columnaPrecio)) as PrecioMedio
FROM 'mi-proyecto-XYZ.Datola.competencia'

Volvemos a conectar Data Studio y BigQuery (esta vez con las nuevas tablas de cotización bursátil y precios de la competencia) y ya podemos pintar.

Data Studion con visitas, transacciones e ingresos de GA y cotización en bolsa y precio competencia de Big Query

Obtener datos de Google Trends con RStudio

Por último, vamos a extraer información de Google Trends. Para ello existen servicios free y de pago, pero en este caso vamos a optar por hacer una consulta con RStudio. En esta página nos explican cómo hacerlo con unas pocas líneas

Como nuestro negocio son las camisetas, la consulta quedaría más o menos así:

#instalamos librerías
#install.packages("gtrendsR")
#install.packages("googlesheets4")
#install.packages("googleAuthR")
#install.packages("taskscheduleR")


#cargamos librerías
library(gtrendsR)
library(dplyr)
library(googlesheets4)
library(googleAuthR)
library(taskscheduleR)


#hacemos la consulta a Google Trends
camiseta <- gtrends(c("camiseta"), time = "now 7-d", geo = c("ES"))

#estructuramos los datos en una tabla
camisetaRelated <- camiseta$related_queries

Se genera un dataset que ya podemos guardar en Google Sheets:

#nos autentificamos pasándole en token
gs4_auth("token.json")

#guardamos el dataset en google sheets
dt = write_sheet(camisetaRelated, ss="<url_de_la_hoja>", sheet = "camiseta")

Para que RStudio pueda escribir en las hojas de cálculos seguramente necesites generar un token para autentificarte. Te dejo un link donde se explica cómo conseguirlo y el enlace al código que yo he usado:

Volveremos a conectar Sheets con BigQuery creando una nueva tabla y BigQuery con DataStudio igual que hicimos en el primer paso. Conseguimos así unificar los datos de nuestra tercera fuente.

Unificar datos y visualizarlos en Data Studio

En BigQuery tenemos ya todos los datos unificados, podemos transformarlos, cruzarlos y darles la forma que queramos, siempre será más eficiente hacerlo aquí que en la herramienta de visualización.

Sólo queda disfrutar diseñando el dashboard.

Data Studio con datos de Google Analytics, datos bursátiles y datos de Google Trends

Parece que debemos aplazar el lanzamiento de la línea de riñoneras y enfocarnos en las camisetas deportivas durante estos días…

Víctor Corral
Víctor Corral

Me pasé de la consultoría de negocio a la tienda física y luego de la tienda física a la consultoría online de datos, pero siempre hice lo mismo: analizar la información para adoptar las mejores estrategias. Al menos decisiones más razonadas, el mundo es un lugar demasiado complejo para predecirlo todo.

Necesitas compartirlo y lo sabes!

Deja un comentario