Automatización de canalizaciones de datos en Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: Change Data Capture

Qué hace un 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)
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;
SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
METADATA$ACTION: INSERT o DELETEMETADATA$ISUPDATE: TRUE cuando es parte de un par de actualizaciónMETADATA$ROW_ID: identificador físico único de la filaMETADATA$ISUPDATE = TRUE


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