Automatisering av datapipelines i Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: Change Data Capture

Vad en ström gör

| Strömstyp | Fångar | Bäst för |
|---|---|---|
| Standard | Alla tabelltyper och vyer samt alla DML-ändringar – spårar insättningar, uppdateringar och borttagningar | Tabeller där en rad kan ändras (t.ex. leveranser) |
| Append-only | Alla tabelltyper och vyer utom externa tabeller – spårar bara radinsättningar | Tabeller med engångsinlägg (t.ex. leveranshändelser) – mer effektivt |
| Insert-only | Externt hanterade Apache Iceberg- och externa tabeller – spårar bara radinsättningar | Externa tabeller |
Katalogtabeller visar filmetadata för en stage (namn, storlek, senast ändrad)
Standardström på leveranstabellen
CREATE STREAM shipments_stream
ON TABLE logistics.shipments;
Append-only-ström på leveranshändelsetabellen
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 eller DELETEMETADATA$ISUPDATE: TRUE när den ingår i ett uppdateringsparMETADATA$ROW_ID: Unik fysisk radidentifierareMETADATA$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';
Automatisering av datapipelines i Snowflake