← PORTAFOLIOPORTFOLIO / proyectos / etl-bigquery

// PRJ_007 · 2023

ETL de audiencia a BigQueryAudience ETL into BigQuery

Datos · PythonData · Python

Más de 5 años de datos de audiencia de un medio digital estaban repartidos. Los junté en un solo lugar y los reportes dejaron de tomar horas.Over 5 years of a digital outlet's audience data were scattered. I brought them into one place and reports stopped taking hours.

En detalleIn detailProcesos ETL en Python que integran Universal Analytics y GA4 en BigQuery para uno de los medios digitales más grandes de Colombia. Centralizaron más de 5 años de datos históricos de tráfico y comportamiento de audiencia, y con ellos los reportes que antes tomaban horas.Python ETL processes bringing Universal Analytics and GA4 into BigQuery for one of Colombia's largest digital outlets. They centralized over 5 years of historical traffic and audience data, and with it the reports that used to take hours.

RolRole
Desarrollador a cargoLead developer
AñoYear
2023
CódigoSource
privado — trabajo de empresaprivate — company work
Stack
Python · BigQuery · GA4

// IMPACTO// IMPACT

+5 años+5 años
históricohistory
UA + GA4UA + GA4
fuentessources
BigQueryBigQuery
destinosink

El problemaThe problem

Los análisis de tráfico se armaban a mano, exportando de la interfaz de Analytics cada vez. El histórico estaba repartido entre Universal Analytics y GA4, y responder una pregunta de audiencia tomaba horas.Traffic analyses were assembled by hand, exporting from the Analytics UI every time. History was split between Universal Analytics and GA4, and answering an audience question took hours.

Cómo lo resolvíHow I solved it

Escribí procesos ETL en Python que consultan ambas APIs y cargan el resultado en BigQuery con un modelo común. Con más de 5 años de histórico centralizado, los reportes pasaron a ser consultas SQL sobre una sola tabla.I wrote Python ETL processes that query both APIs and load the result into BigQuery under a common model. With over 5 years of history centralized, reports became SQL queries against a single table.

Arquitectura y stackArchitecture & stack

  1. [01]Universal Analytics
  2. [02]GA4 Data API
  3. [03]ETL Python
  4. [04]BigQuery
  5. [05]Reportes SQL
  • Python
  • BigQuery
  • GA4
  • SQL

Lo que aprendíWhat I learned

01 //

Dos APIs, un modelo

Lo caro no fue extraer, fue decidir cómo hacer comparables las métricas de UA y GA4.

02 //

El histórico es el activo

Cinco años de datos valen más que cualquier dashboard que se construya encima.

03 //

Backfill una sola vez

Cargar el histórico de golpe y dejar el incremental corriendo evita reprocesar para siempre.

01 //

Two APIs, one model

The expensive part wasn't extraction, it was deciding how to make UA and GA4 metrics comparable.

02 //

History is the asset

Five years of data is worth more than any dashboard built on top of it.

03 //

Backfill once

Loading history in one pass and leaving the incremental running avoids reprocessing forever.