Stream e Change Data Capture

Automazione delle pipeline di dati in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Elaborare solo ciò che è cambiato

CDC: Change Data Capture Due confronti su come vengono elaborati i dati

Automazione delle pipeline di dati in Snowflake

Stream

Cosa fa uno stream

  • Traccia ogni INSERT, UPDATE e DELETE sulla tabella sorgente

Screenshot 2026-05-11 at 10.50.31 am.png

  • Mantiene un log delle modifiche continuo — niente duplicazioni
  • Una volta consumato, l'offset avanza; la lettura successiva parte da zero
1 * Snowflake Learning Resource
Automazione delle pipeline di dati in Snowflake

Tipi di stream

 

Tipo di stream Cattura Ideale per
Standard Tutti i tipi di tabelle e viste & tutte le modifiche DML - traccia insert, update, delete Tabelle dove qualsiasi riga può cambiare (es. spedizioni)
Solo-append Tutti i tipi di tabelle e viste, tranne le tabelle esterne - traccia solo gli insert Tabelle write-once (es. eventi di consegna) - più efficiente
Solo-insert Apache Iceberg gestito esternamente e tabelle esterne - traccia solo gli insert Tabelle esterne

Le directory tables espongono i metadati dei file di uno stage (nome, dimensione, timestamp ultima modifica)

Automazione delle pipeline di dati in Snowflake

Creare uno stream

Stream standard sulla tabella shipments

CREATE STREAM shipments_stream
  ON TABLE logistics.shipments;

Stream solo-append sulla tabella delivery_events

CREATE STREAM delivery_events_stream
  ON TABLE logistics.delivery_events
  APPEND_ONLY = TRUE;
Automazione delle pipeline di dati in Snowflake

Colonne di metadati dello stream

SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
  • METADATA$ACTION: INSERT o DELETE
  • METADATA$ISUPDATE: TRUE quando parte di una coppia di update
  • METADATA$ROW_ID: Identificatore fisico univoco della riga
  • Gli update compaiono come coppia DELETE + INSERT, entrambe con METADATA$ISUPDATE = TRUE

Colonne di metadati dello stream con METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID e dati di esempio

Automazione delle pipeline di dati in Snowflake

L'offset dello stream

Diagramma timeline - Stream creato (offset parte qui) → Avvengono cambi nella tabella sorgente (lo stream accumula record) → Stream consumato in una transazione (l'offset avanza a ora

Automazione delle pipeline di dati in Snowflake

Panoramica: stream in una pipeline

  • Gli stream si abbinano ai task — oggetti Snowflake che eseguono SQL a intervalli
  • Il task legge solo le righe modificate; con 10M righe: 2 secondi vs 2 minuti

Screenshot 2026-05-11 at 10.48.51 am.png

1 * Snowflake Learning Resource
Automazione delle pipeline di dati in Snowflake

Query: stream in una pipeline

  • Gli stream si abbinano ai task - oggetti Snowflake che eseguono SQL a intervalli
  • Il task legge solo le righe modificate; con 10M righe: 2 secondi vs 2 minuti
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';
Automazione delle pipeline di dati in Snowflake

Passiamo alla pratica !

Automazione delle pipeline di dati in Snowflake

Preparing Video For Download...