Introducción
- En entornos productivos, los data engineers a menudo necesitan realizar recargas parciales de periodos específicos.
- Ejemplo: recargar datos de enero y febrero porque se han corregido errores en el origen.
- DBT permite realizar estas recargas utilizando variables de entrada que parametrizan los modelos.
Variables de entrada en DBT
- Las variables permiten que un modelo reciba parámetros dinámicos al ejecutarse, por ejemplo, rangos de fechas.
- Se definen en el comando de ejecución:
- dbt run –vars ‘{«fecha_inicio»:»2025-01-01″,»fecha_fin»:»2025-02-28″}’
- Dentro del modelo, se accede a las variables mediante la sintaxis:
- {{ var(‘fecha_inicio’) }}
- {{ var(‘fecha_fin’) }}
Primer paso: modelo “ephemeral”
- Para preparar la recarga parcial, extraemos la query de origen del modelo fact_invoices.
- Se crea un modelo ephemeral:
- No genera tabla ni vista en la base de datos.
- Permite realizar transformaciones intermedias y aplicar filtros dinámicos según variables de entrada.
- Ejemplo de modelo ephemeral:
- El modelo ephemeral en DBT funciona de la siguiente manera: cada vez que se invoca, DBT genera una CTE (Common Table Expression) internamente, sin persistir los datos en una tabla ni en una vista.
- A continuación, se muestra la query que DBT genera al ejecutar el modelo fact_invoices.sql:
Flujo de trabajo para recargas parciales
- Se ha creado un nuevo modelo para realizar pruebas, preservando intacto el modelo original fact_invoices.sql.
- En la imagen se observa que el modelo espera recibir las variables fecha_desde y fecha_hasta para su ejecución. Si se ejecuta el modelo sin parámetros, por defecto, las variables se establecen desde 7 días antes de la fecha actual hasta 2099-01-01.
- Para ejecutar el modelo con parámetros, se utiliza el siguiente comando:
- dbt run -m fact_invoices_parametrizado –vars ‘{«fecha_desde»: «2025-01-01», «fecha_hasta»: «2025-02-01»}’
- En la primera carga, el modelo se ejecutará completamente sin aplicar filtros. El modelo parametrizado solo comenzará a funcionar a partir de la segunda carga.
- Los registros que se actualizarán corresponden al rango comprendido entre el 2025-01-01 y el 2025-02-01.
- Para la prueba, se modificarán los registros mediante la ejecución de un UPDATE, con el fin de evaluar el comportamiento del modelo.
- A continuación, se vuelve a ejecutar el modelo parametrizado utilizando el siguiente comando:
- dbt run -m fact_invoices_parametrizado –vars ‘{«fecha_desde»: «2025-01-01», «fecha_hasta»: «2025-02-01»}’
- En la imagen siguiente se observa cómo se han recargado las facturas correspondientes al rango de fechas entre 2025-01-01 y 2025-02-01.
- La siguiente prueba será más completa. Se modificarán todas las facturas para realizar recargas parciales y evaluar el comportamiento del modelo.
- Se realiza una recarga de facturas desde el 1900-01-01 hasta el 2024-01-01 utilizando el siguiente comando:
- dbt run -m fact_invoices_parametrizado –vars ‘{«fecha_desde»: «1900-01-01», «fecha_hasta»: «2024-01-01»}’
- A continuación, se ejecuta el modelo para el día 2024-02-24 utilizando el siguiente comando:
- dbt run -m fact_invoices_parametrizado –vars ‘{«fecha_desde»: «2024-02-24», «fecha_hasta»: «2024-02-24»}’

Profesional con experiencia en el desarrollo de software, proyectos web y proyectos de business Intelligence y big data.
Fundador y autor en DataManagement.es donde he escrito artículos como:
- El modelo de estrella. El pilar fundamental del Business Intelligence
- Automatización de procesos con Pentaho
- Proceso ETL con python desde cero y paso a paso
- web scraping de empresas con python y powerbi
Deportista de alto nivel desde los 15 años, hago atletismo y mi especialidad es el medio fondo con marcas:
- 1000: 2.42
- 1500: 4.10
- 3000: 8.58
- 5000: 15.44
- 10000: 32.53
Del deporte he aprendido que con esfuerzo se puede conseguir grandes cosas.
Si mi perfil te es interesante, no dudes en contactar conmigo.
fran@datamanagement.es
Virgen del pilar nº4, ático H
03330 Crevillente (Alicante)
Francisco Rodriguez Alfaro