Laboratorio 10: Transformación de Datos con dbt (Data Build Tool)
Objetivos del Laboratorio
- Implementar metodologías de ingeniería analítica (Analytics Engineering) estructurando pipelines lógicos dentro de BigQuery de forma controlada.
- Organizar y modelar los datos analíticos dividiendo el flujo en capas de procesamiento: Staging (vistas limpias) y Marts (tablas físicas consolidadas).
- Garantizar la integridad de la información mediante pruebas automatizadas de esquema y pruebas personalizadas de aserción de reglas de negocio.
- Establecer accesos de desarrollo seguros utilizando el método de autenticación local con
oauthpara heredar de forma transparente los permisos de GCP.
Herramientas y APIs Utilizadas
dbt-core: Herramienta de código abierto empleada para estructurar, compilar y documentar pipelines lógicos de transformación SQL.dbt-bigquery: Adaptador oficial encargado de traducir las macros lógicas de dbt en ejecuciones y compilaciones físicas dentro de BigQuery.BigQuery API: API de Google Cloud encargada de orquestar la creación de esquemas y procesar las transformaciones en la nube.
Estructura del Código Desarrollado
profiles.yml: Archivo de configuración de conexiones de dbt que utiliza autenticación local basada en herencia de token de GCP.dbt_project.yml: Especificaciones globales del proyecto de dbt que asocian el perfil de conexión y los tipos de materialización por capas.models/schema.yml: Archivo de configuración que describe las fuentes de datos crudos (sources), los modelos analíticos y sus respectivas pruebas asociadas.models/staging/stg_raw_orders.sql: Modelo de la capa staging encargado de limpiar campos y reformatear cadenas de texto a tipos físicos de fecha.models/marts/fct_orders_summary.sql: Modelo consolidado de negocio para ofrecer agregaciones históricas por cliente.tests/assert_spent_non_negative.sql: Prueba de aserción personalizada que comprueba que ningún registro completado posea importes negativos.
Paso a Paso del Despliegue
Fase 1: Datos de Entrada y Preparación
- Despliegue declarativo con Terraform del dataset de datos crudos
lab10_rawy su respectiva tabla nativa de órdenes. - Carga inicial de registros inconsistentes forzando que las fechas residan en formato de cadena de texto (
STRING).
Fase 2: Configuración del Proyecto dbt
- Instalación aislada de dependencias creando un entorno virtual de Python y ejecutando
pip install dbt-bigquery. - Estructuración de la conexión remota segura en el archivo
profiles.ymlestableciendo el parámetromethod: oauth. - Asociación de los tipos de materialización en el archivo del proyecto (
viewpara la capa de staging ytablepara la capa marts).
Fase 3: Desarrollo de Capas Lógicas y Pruebas
- Estructuración del modelo de staging aislando la fuente declarada con la macro
{{ source() }}y aplicando el formateo temporal conPARSE_DATE. - Estructuración del modelo final de marts agregando la información de negocio y haciendo referencia a la capa limpia mediante la macro
{{ ref() }}. - Estructuración de pruebas personalizadas en el directorio de pruebas (tests) para identificar registros anómalos de negocio.
Fase 4: Ejecución y Validación Analítica
- Lanzamiento y compilación del pipeline de transformaciones en la terminal ejecutando el comando
dbt run. - Validación de la calidad de los datos y de las aserciones de esquema del proyecto ejecutando el comando
dbt test. - Inspección de las tablas resultantes directamente en el dataset autogenerado de BigQuery
lab10_analytics.