Automatyzacja potoków danych w Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: Change Data Capture

Działanie strumienia

| Typ strumienia | Przechwytuje | Najlepsze zastosowanie |
|---|---|---|
| Standard | Wszystkie typy tabel i widoki oraz wszystkie zmiany DML – śledzi INSERT, UPDATE, DELETE | Tabele, w których każdy wiersz może ulec zmianie (np. przesyłki) |
| Append-only | Wszystkie typy tabel i widoki, z wyjątkiem tabel zewnętrznych – śledzi tylko INSERT | Tabele z jednorazowym wstawianiem (np. zdarzenia dostawy) – wydajniejsze |
| Insert-only | Zewnętrzne tabele Apache Iceberg i tabele zewnętrzne – śledzi tylko INSERT | Tabele zewnętrzne |
Tabele katalogów udostępniają metadane plików dla stage'a (nazwa, rozmiar, data modyfikacji)
Strumień standardowy na tabeli shipments
CREATE STREAM shipments_stream
ON TABLE logistics.shipments;
Strumień append-only na tabeli zdarzeń dostawy
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 lub DELETEMETADATA$ISUPDATE: TRUE jeśli część pary aktualizacjiMETADATA$ROW_ID: Unikalny fizyczny identyfikator wierszaMETADATA$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';
Automatyzacja potoków danych w Snowflake