Streams y Change Data Capture

Automatización de canalizaciones de datos en Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Procesar solo lo que cambió

CDC: Change Data Capture Dos comparaciones de cómo se procesa la data

Automatización de canalizaciones de datos en Snowflake

Streams

Qué hace un stream

  • Registra cada INSERT, UPDATE y DELETE en una tabla origen

Screenshot 2026-05-11 at 10.50.31 am.png

  • Mantiene un log de cambios continuo — sin duplicar datos
  • Una vez consumido, el offset avanza; la siguiente lectura empieza limpia
1 * Recurso de aprendizaje de Snowflake
Automatización de canalizaciones de datos en Snowflake

Tipos de stream

 

Tipo de stream Captura Ideal para
Standard Todos los tipos de tabla y vistas y todos los cambios DML: inserciones, actualizaciones, eliminaciones Tablas donde cualquier fila puede cambiar (p. ej., envíos)
Append-only Todos los tipos de tabla y vistas, excepto tablas externas: solo inserciones Tablas de inserción única (p. ej., eventos de entrega) - más eficiente
Insert-only Tablas Apache Iceberg y externas gestionadas externamente: solo inserciones Tablas externas

Las directory tables exponen metadatos de archivos de un stage (nombre, tamaño, marca de tiempo de última modificación)

Automatización de canalizaciones de datos en Snowflake

Crear un stream

Stream estándar en la tabla shipments

CREATE STREAM shipments_stream
  ON TABLE logistics.shipments;

Stream append-only en la tabla delivery_events

CREATE STREAM delivery_events_stream
  ON TABLE logistics.delivery_events
  APPEND_ONLY = TRUE;
Automatización de canalizaciones de datos en Snowflake

Columnas de metadatos del stream

SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
  • METADATA$ACTION: INSERT o DELETE
  • METADATA$ISUPDATE: TRUE cuando es parte de un par de actualización
  • METADATA$ROW_ID: identificador físico único de la fila
  • Las actualizaciones aparecen como un par DELETE + INSERT, ambas con METADATA$ISUPDATE = TRUE

Columnas de metadatos del stream que muestran METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID con datos de ejemplo

Automatización de canalizaciones de datos en Snowflake

El offset del stream

Diagrama temporal: Stream creado (el offset empieza aquí) → Cambios en la tabla origen (el stream acumula registros) → Stream consumido en una transacción (el offset avanza a ahora)

Automatización de canalizaciones de datos en Snowflake

Resumen: streams en un pipeline

  • Los streams se combinan con tasks — objetos de Snowflake que ejecutan SQL con una programación
  • La task lee solo filas cambiadas; con 10M de filas: 2 s vs 2 min

Screenshot 2026-05-11 at 10.48.51 am.png

1 * Recurso de aprendizaje de Snowflake
Automatización de canalizaciones de datos en Snowflake

Consulta: streams en un pipeline

  • Los streams se combinan con tasks - objetos de Snowflake que ejecutan SQL con una programación
  • La task lee solo filas cambiadas; con 10M de filas: 2 s vs 2 min
CREATE TASK logistics.sync_shipments
  WAREHOUSE = compute_wh
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA('logistics.staging_shipments_stream')
AS
  INSERT INTO logistics.shipments
  SELECT shipment_id, region, carrier, delivery_days
  FROM logistics.staging_shipments_stream
  WHERE METADATA$ACTION = 'INSERT';
Automatización de canalizaciones de datos en Snowflake

¡Vamos a practicar!

Automatización de canalizaciones de datos en Snowflake

Preparing Video For Download...