En arquitecturas modernas de datos, uno de los mayores retos es mantener datasets transformados y actualizados de forma automática y eficiente.
Tradicionalmente, en Snowflake, esto se resolvía mediante:
- Streams
- Tasks
- Procedimientos almacenados
- Orquestadores externos
Con la introducción de Dynamic Tables, Snowflake simplifica este modelo y permite definir pipelines declarativos que se actualizan automáticamente.
¿Qué es una Dynamic Table?
Una Dynamic Table es una tabla que se actualiza automáticamente en función de una consulta declarativa y un objetivo de frescura (target lag).
En lugar de programar tareas manuales, simplemente definimos:
- La consulta base
- El tiempo máximo de retraso permitido
Snowflake se encarga de mantener la tabla actualizada.
Sintaxis básica
Ejemplo:
CREATE OR REPLACE DYNAMIC TABLE sales_summary
TARGET_LAG = ‘5 minutes’
WAREHOUSE = analytics_wh
AS
SELECT
customer_id,
SUM(total_amount) AS total_spent
FROM orders
GROUP BY customer_id;
En este ejemplo:
- La tabla se actualiza automáticamente.
- Se mantiene con un retraso máximo de 5 minutos.
- Snowflake gestiona el refresco.
El problema que resuelven
Antes de Dynamic Tables, mantener transformaciones incrementales requería:
- Crear un Stream
- Crear un Task
- Gestionar dependencias
- Manejar fallos manualmente
- Supervisar ejecución
Esto añadía complejidad operativa.
Dynamic Tables eliminan gran parte de esta fricción.
Diferencia frente a Streams + Tasks
|
Streams + Tasks |
Dynamic Tables |
|
Requiere lógica manual |
Declarativo |
|
Orquestación explícita |
Orquestación automática |
|
Mayor mantenimiento |
Menor complejidad |
|
Gestión de dependencias manual |
Grafo gestionado por Snowflake |
Dynamic Tables simplifican pipelines incrementales.
¿Cómo funcionan internamente?
Snowflake:
- Analiza la consulta
- Determina dependencias
- Ejecuta actualizaciones incrementales
- Mantiene el estado interno
Se construye automáticamente un DAG (grafo de dependencias).
El usuario define el “qué”, no el “cómo”.
Target Lag: el concepto clave
TARGET_LAG define la frescura deseada.
Ejemplo:
TARGET_LAG = ‘1 hour’
Esto significa que la tabla puede tener hasta una hora de retraso respecto a las tablas base.
No es ejecución en tiempo real estricto, sino actualización basada en SLA de frescura.
Casos de uso ideales
Dynamic Tables son especialmente útiles para:
- Transformaciones agregadas recurrentes
- Modelos analíticos intermedios
- Data marts derivados
- Pipelines declarativos
- Sustitución de procesos batch simples
No son necesariamente la mejor opción para lógica extremadamente compleja.
Ejemplo más avanzado
CREATE OR REPLACE DYNAMIC TABLE customer_metrics
TARGET_LAG = ’10 minutes’
WAREHOUSE = analytics_wh
AS
SELECT
c.customer_id,
COUNT(o.order_id) AS total_orders,
SUM(o.total_amount) AS lifetime_value
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id
GROUP BY c.customer_id;
Snowflake mantiene esta tabla actualizada automáticamente.
Beneficios principales
🔹 Simplicidad
Se elimina la necesidad de múltiples objetos de orquestación.
🔹 Declarativo
El desarrollador define la transformación, no la ejecución.
🔹 Mantenimiento reducido
Menos código, menos dependencias manuales.
🔹 Integración nativa
Totalmente integrado en el ecosistema Snowflake.
Consideraciones importantes
Antes de usar Dynamic Tables:
- Evaluar coste del warehouse asociado
- Definir correctamente el target lag
- Entender dependencias
- Evaluar impacto en consumo
- Revisar frecuencia de actualización necesaria
No todo necesita refresco frecuente.
Cuándo no usar Dynamic Tables
Puede no ser la mejor opción cuando:
- Se requiere control muy específico de ejecución
- La lógica es altamente procedural
- Se necesita integración con sistemas externos
- La transformación depende de eventos fuera de Snowflake
En esos casos, Streams + Tasks o herramientas externas pueden seguir siendo válidas.
Dynamic Tables y arquitectura moderna
Dynamic Tables refuerzan el enfoque:
- ELT declarativo
- Menos orquestación manual
- Más automatización nativa
- Arquitectura simplificada
Son un paso hacia pipelines más mantenibles y escalables.
Conclusión
Dynamic Tables representan una evolución significativa en Snowflake al simplificar la creación y mantenimiento de pipelines de transformación incrementales.
Al adoptar un enfoque declarativo basado en frescura objetivo, reducen complejidad operativa y permiten a los equipos centrarse en la lógica de negocio en lugar de la orquestación.
Para arquitecturas modernas basadas en Snowflake, Dynamic Tables son una herramienta poderosa que merece ser evaluada estratégicamente.




