Snowflake 데이터 파이프라인 자동화
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: 변경 데이터 캡처(Change Data Capture)

스트림의 기능

| 스트림 유형 | 캡처 대상 | 적합한 용도 |
|---|---|---|
| Standard | 모든 테이블 유형 및 뷰, 모든 DML 변경(삽입, 업데이트, 삭제) | 임의 행이 변경될 수 있는 테이블(예: 배송) |
| Append-only | 외부 테이블 제외 모든 테이블 유형 및 뷰, 행 삽입만 추적 | 삽입 전용 테이블(예: 배송 이벤트) - 더 효율적 |
| Insert-only | 외부 관리 Apache Iceberg 및 외부 테이블, 행 삽입만 추적 | 외부 테이블 |
디렉터리 테이블은 스테이지의 파일 메타데이터(이름, 크기, 마지막 수정 타임스탬프)를 제공합니다
shipments 테이블의 Standard 스트림
CREATE STREAM shipments_stream
ON TABLE logistics.shipments;
delivery_events 테이블의 Append-only 스트림
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 또는 DELETEMETADATA$ISUPDATE: 업데이트 쌍의 일부일 때 TRUEMETADATA$ROW_ID: 고유한 물리적 행 식별자METADATA$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';
Snowflake 데이터 파이프라인 자동화