Automazione delle pipeline di dati in Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: Change Data Capture

Cosa fa uno 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)
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;
SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
METADATA$ACTION: INSERT o DELETEMETADATA$ISUPDATE: TRUE quando parte di una coppia di updateMETADATA$ROW_ID: Identificatore fisico univoco della rigaMETADATA$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';
Automazione delle pipeline di dati in Snowflake