Concepto clave
Definir los requerimientos y el esquema de un proyecto en dbt Cloud es como crear los planos de un edificio antes de construirlo. En el contexto de un pipeline de datos analytics, esto significa entender claramente qué datos necesitas, de dónde vienen, cómo se relacionan y qué transformaciones deben aplicarse para que sean útiles para el análisis. Sin esta fase, corres el riesgo de construir modelos que no resuelven las necesidades del negocio o que son difíciles de mantener.
Imagina que eres un chef preparando un banquete. Los requerimientos son la lista de platos que debes servir (por ejemplo, un dashboard de ventas por región), y el esquema es la receta detallada: qué ingredientes (datos crudos) necesitas, cómo los cortas y cocinas (transformaciones con SQL), y cómo los presentas en la mesa (tablas finales en el warehouse). En dbt Cloud, esto se traduce en documentos como un data dictionary y diagramas de relaciones entre tablas, que guían todo el desarrollo.
Cómo funciona en la práctica
Vamos a definir un proyecto para un pipeline de datos analytics de una tienda online. Sigue estos pasos:
- Identifica las fuentes de datos: Revisa las bases de datos o APIs de donde vendrán los datos. Por ejemplo, una tabla
orderscon pedidos y una tablacustomerscon información de clientes. - Define los objetivos del negocio: Pregunta: ¿Qué métricas clave necesitamos? Ejemplo: ventas totales, clientes recurrentes, productos más vendidos.
- Diseña el esquema: Crea un diagrama que muestre cómo las tablas se relacionan. Por ejemplo,
ordersse une acustomersmediantecustomer_id. - Especifica las transformaciones: Decide qué cálculos hacer, como agregar ventas por mes o limpiar direcciones de correo.
- Documenta todo: Usa herramientas como markdown en dbt para explicar cada tabla y columna.
Codigo en accion
Aquí tienes un ejemplo de cómo definir un modelo en dbt Cloud para nuestro proyecto de tienda online. Primero, el esquema inicial en SQL crudo:
-- Tabla cruda de pedidos (fuente de datos)
SELECT * FROM raw.orders;
-- Contiene: order_id, customer_id, product_id, amount, order_dateLuego, el modelo transformado en dbt con documentación:
-- models/staging/stg_orders.sql
{{ config(
materialized='view',
description='Tabla de pedidos limpia y estandarizada para análisis'
) }}
WITH cleaned_orders AS (
SELECT
order_id,
customer_id,
product_id,
amount,
-- Convertir fecha a formato estándar
CAST(order_date AS DATE) AS order_date,
-- Calcular total con impuestos (ejemplo simple)
amount * 1.16 AS total_with_tax
FROM {{ source('raw', 'orders') }}
WHERE amount > 0 -- Filtrar pedidos inválidos
)
SELECT * FROM cleaned_orders;Errores comunes
- No validar los datos de origen: Asumir que los datos crudos están limpios puede llevar a errores en los modelos. Siempre revisa muestras de datos antes de diseñar el esquema.
- Sobrediseñar el esquema: Crear demasiadas tablas o relaciones complejas sin necesidad. Empieza simple y expande según los requerimientos.
- Olvidar la documentación: Sin documentación, otros miembros del equipo no entenderán el propósito de cada modelo. Usa comentarios en SQL y archivos .yml en dbt.
- Ignorar el rendimiento: Diseñar esquemas que no escalan, como usar muchos JOINs en tablas grandes. Considera el volumen de datos desde el inicio.
- No alinear con los stakeholders: Desarrollar sin confirmar que los outputs (por ejemplo, métricas) cumplen con lo que necesita el área de negocio.
Checklist de dominio
- He identificado al menos 3 fuentes de datos clave para el proyecto.
- Tengo un diagrama o documento que muestra las relaciones entre las tablas principales.
- He definido las métricas de negocio que el pipeline debe soportar (por ejemplo, 5 métricas).
- He documentado el propósito de cada modelo en un archivo .yml de dbt.
- He revisado datos de muestra para validar calidad y consistencia.
- He considerado optimizaciones de rendimiento (por ejemplo, particionamiento).
- He obtenido aprobación de los stakeholders sobre los requerimientos.
Diseñar el esquema inicial para un proyecto de análisis de ventas
En este ejercicio, definirás los requerimientos y esquema para un pipeline de datos analytics de una empresa ficticia llamada TechStore, que vende productos electrónicos en línea. Sigue estos pasos:
- Revisa los datos de origen: TechStore tiene dos tablas principales en su base de datos:
sales_raw: Contienesale_id,customer_id,product_id,quantity,price_per_unit,sale_date(como string en formato 'YYYY-MM-DD').products_raw: Contieneproduct_id,product_name,category,supplier_id.
- Define los objetivos: El equipo de analytics necesita calcular:
- Ventas totales por mes.
- Productos más vendidos por categoría.
- Clientes con más compras en el último trimestre.
- Crea un diagrama de esquema: Dibuja en papel o usa una herramienta digital para mostrar cómo relacionarías las tablas. Incluye las transformaciones clave, como calcular el total de venta (
quantity * price_per_unit). - Escribe un modelo dbt inicial: Crea un archivo SQL para un modelo de staging llamado
stg_salesque limpie y transforme los datos desales_raw. Asegúrate de incluir comentarios que expliquen cada paso. - Documenta en un archivo .yml: Añade una descripción para el modelo en un archivo de documentación de dbt, especificando su propósito y columnas clave.
- Recuerda que en dbt, puedes usar {{ source('nombre', 'tabla') }} para referenciar datos crudos.
- Considera agregar una columna calculada para el total de venta en el modelo de staging.
- Usa CAST o TO_DATE para convertir sale_date a un tipo de dato fecha.
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.