Skip to main content
dbtSnowflake

Gestión de entornos en dbt con Snowflake

By noviembre 10, 2023septiembre 8th, 2026No Comments

En cualquier proyecto profesional de datos, trabajar directamente sobre producción es una mala práctica. Los equipos suelen necesitar varios entornos para desarrollar, probar y desplegar cambios de forma controlada.

Cuando utilizamos dbt Labs junto con Snowflake, es fundamental definir correctamente los entornos de trabajo.

Los más comunes son:

  • Development (dev)
  • Testing / Staging (test)
  • Production (prod)

Una correcta gestión de entornos permite reducir riesgos, mejorar colaboración y mantener pipelines confiables.

¿Por qué son importantes los entornos?

Sin separación de entornos pueden ocurrir problemas como:

  • Sobrescribir datos de producción accidentalmente
  • Ejecutar pruebas sobre datasets reales
  • Interferir con consultas de negocio
  • Generar inconsistencias en pipelines

Separar entornos permite experimentar sin afectar sistemas críticos.

Cómo funciona la configuración de entornos en dbt

dbt gestiona conexiones a bases de datos mediante el archivo profiles.yml.

Este archivo define:

  • Conexiones a Snowflake
  • Credenciales
  • Warehouses
  • Bases de datos
  • Esquemas

Cada entorno se configura como un target.

Ejemplo de profiles.yml

my_dbt_project:

  target: dev

  outputs:

 

    dev:

      type: snowflake

      account: my_account

      user: my_user

      password: my_password

      role: transformer

      database: DEV_DB

      warehouse: DEV_WH

      schema: dbt_dev

 

    prod:

      type: snowflake

      account: my_account

      user: my_user

      password: my_password

      role: transformer

      database: PROD_DB

      warehouse: PROD_WH

      schema: analytics

Aquí tenemos dos entornos configurados:

  • dev
  • prod

Ejecutar dbt en un entorno específico

Por defecto, dbt ejecuta el entorno definido en target.

Pero también podemos especificarlo manualmente:

dbt run –target prod

Esto ejecutará los modelos en la base de datos y esquema configurados para producción.

Uso de esquemas dinámicos

En entornos de desarrollo es común crear esquemas dinámicos para cada usuario.

Ejemplo:

schema: dbt_{{ env_var(‘USER’) }}

Esto permite que cada desarrollador tenga su propio espacio de trabajo sin interferir con otros.

Diferencias entre entornos

Un ejemplo típico de configuración:

Entorno

Base de datos

Warehouse

Dev

DEV_DB

DEV_WH

Test

STAGING_DB

STAGING_WH

Prod

PROD_DB

PROD_WH

Esto permite aislar recursos y controlar consumo.

Integración con CI/CD

En proyectos maduros, los entornos se integran con pipelines automáticos.

Ejemplo de flujo:

  1. Desarrollo en entorno dev
  2. Pull request en Git
  3. Tests automáticos en entorno staging
  4. Despliegue en producción

Esto permite mantener calidad y trazabilidad.

Uso de variables por entorno

dbt permite cambiar comportamiento según entorno.

Ejemplo:

{% if target.name == ‘prod’ %}

    WHERE is_active = TRUE

{% else %}

    LIMIT 1000

{% endif %}

Esto permite consultas más ligeras en desarrollo.

Buenas prácticas

  • Nunca desarrollar directamente en producción
  • Usar esquemas aislados por desarrollador
  • Definir warehouses distintos por entorno
  • Integrar control de versiones
  • Automatizar despliegues

Estas prácticas alinean proyectos de datos con estándares de ingeniería de software.

Errores comunes

  • Compartir esquema dev entre varios desarrolladores
  • Usar mismo warehouse para todos los entornos
  • No separar bases de datos
  • Ejecutar dbt run en producción accidentalmente
  • No controlar credenciales

La disciplina en entornos es fundamental.

Snowflake y gestión de entornos

Snowflake facilita esta arquitectura gracias a:

  • Separación de warehouses
  • Gestión flexible de roles
  • Bases de datos independientes
  • Cloning instantáneo

Estas capacidades hacen que crear entornos aislados sea rápido y económico.

Conclusión

Gestionar correctamente los entornos en dbt es esencial para mantener proyectos de datos organizados, seguros y escalables. La combinación de dbt y Snowflake permite crear flujos de trabajo estructurados donde desarrollo, pruebas y producción están claramente separados.

Adoptar buenas prácticas en la gestión de entornos no solo reduce riesgos, sino que también facilita colaboración entre equipos y mejora la calidad de los pipelines de datos.

Leave a Reply