D2B Data Framework
Librería Python open source que unifica la extracción de datos de 14 plataformas de marketing y analítica, con carga a BigQuery, control de frescura y forecasting.
- Stack
- Python 3.11+ · BigQuery · GA4 Data API · Meta Graph API · Google Sheets · Prophet · pytest · GitHub Actions
- En cifras
- 14 Conectores 19 Suites de tests 0.3.0 Versión
- 01 APIs de origen Meta, GA4, LinkedIn, TikTok, X…
- 02 Conectores d2b_data una clase por plataforma
- 03 load_guard ¿ya se cargó hoy?
- 04 BigQuery · Sheets DataFrames de pandas
- 05 Forecasting Prophet (opcional)
Problema
Cada cliente de una agencia de datos vive en una mezcla distinta de plataformas: Meta Ads, GA4, LinkedIn, TikTok, Search Console, HubSpot, Shopify. Cada API tiene su autenticación, su paginación y su forma de devolver los datos. Sin una capa común, cada pipeline nuevo vuelve a escribir el mismo código de extracción, y cada cambio de API rompe varios scripts a la vez.
Arquitectura y stack
d2b_data es un paquete Python instalable con pip directamente desde GitHub. Expone una clase por plataforma, y todas devuelven pandas.DataFrame, así que el destino (BigQuery, Google Sheets o un modelo) no depende de dónde vinieron los datos.
| Área | Conectores |
|---|---|
| Paid media | Facebook Marketing, LinkedIn Ads, TikTok Ads, X Ads |
| Orgánico | Facebook, Instagram, LinkedIn, YouTube |
| Analítica | GA4 (incluye tiempo real), Search Console |
| Negocio | HubSpot, Shopify |
| Destinos | BigQuery, Google Sheets |
Encima de los conectores hay utilidades transversales: manejo de tokens OAuth2 (Google_Token_MNG), un logger de workflow con alertas por webhook, conversión de zonas horarias y un módulo de forecasting con Meta Prophet.
Decisiones técnicas
- Imports explícitos por submódulo.
import d2b_datano carga ningún SDK de terceros; cada conector se importa por separado. Instalar el paquete nunca obliga a traer todas las dependencias. - Forecasting como extra opcional. Prophet compila Stan y tarda en instalarse, así que vive en
pip install "d2b_data[forecasting]". La API tiene dos niveles:get_forecast(30)sin configuración, oforecast()con estacionalidades, feriados de Chile, regresores externos e intervalos de confianza. load_guard: idempotencia sin perder datos. Cada carga exitosa deja una fila por cuenta en una tabla de control en BigQuery. Antes de llamar a la API, la función revisa si esa cuenta ya se cargó hoy después de la hora de corte y, si es así, se salta la llamada. Varias corridas al día sirven de respaldo sin repetir consumo de API. Si la tabla de control falla, el módulo responde «no cargado» y la carga ocurre igual: se puede perder el ahorro, nunca datos.- Deprecaciones ordenadas. Al renombrar parámetros (
verbose_logger→logger), el nombre antiguo sigue funcionando con unDeprecationWarning, para que los pipelines en producción migren sin romperse. - Tests y releases automatizados. Suites de
pytestpor conector y dos workflows de GitHub Actions: uno corre los tests y otro publica las releases.
Impacto
Es la base común sobre la que se construyen los pipelines de datos del equipo: un conector nuevo se escribe una vez y queda disponible para todos los proyectos. Al ser open source bajo licencia MIT, cualquiera puede instalarlo y conectarlo a sus propias cuentas.