Automatisation des pipelines de données dans Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC : Change Data Capture

Ce que fait un flux

| Type de flux | Capture | Idéal pour |
|---|---|---|
| Standard | Tous types de tables et vues & tous changements DML - insertions, mises à jour, suppressions | Tables où toute ligne peut changer (ex. expéditions) |
| Ajout-seulement | Tous types de tables et vues, sauf tables externes - n’enregistre que les insertions | Tables à insertion unique (ex. événements de livraison) - plus efficace |
| Insertion-seulement | Tables Apache Iceberg gérées externement et tables externes - n’enregistre que les insertions | Tables externes |
Les tables d’annuaire exposent les métadonnées de fichiers d’un stage (nom, taille, horodatage de dernière modification)
Flux standard sur la table shipments
CREATE STREAM shipments_stream
ON TABLE logistics.shipments;
Flux ajout-seulement sur la table 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 ou DELETEMETADATA$ISUPDATE : TRUE quand c’est une paire de mise à jourMETADATA$ROW_ID : Identifiant physique unique de ligneMETADATA$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';
Automatisation des pipelines de données dans Snowflake