Snowflake 데이터 파이프라인 자동화
Emily Melhuish
Technical Curriculum Developer, Snowflake
동적 테이블:

스트림과 태스크:

선언형 파이프라인 자동화
SELECT 쿼리로 내용 정의 — 결과를 기술하면 Snowflake가 새로 고침 관리CREATE DYNAMIC TABLE logistics.delivery_summary
TARGET_LAG = '1 hour'
WAREHOUSE = harbr_wh
AS
SELECT region, COUNT(*) AS shipments,
AVG(delivery_days) AS avg_days
FROM logistics.shipments GROUP BY region;
사용자와 Snowflake 간의 최신성 계약
| TARGET_LAG 값 | 효과 |
|---|---|
'5 minutes' |
최대 5분 지연 — 빈번하게 새로 고침 |
'1 hour' |
새로 고침 빈도 낮음 — 컴퓨팅 사용량 절감 |
DOWNSTREAM |
다운스트림 의존성에서 지연 추론 — 체인 테이블에 적합 |
증분 새로 고침
-- Incremental-friendly:
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments
GROUP BY region;
전체 새로 고침

DOWNSTREAM 지연은 다음 테이블의 요구에 따름 — 과도한 새로 고침 방지동적 테이블: 선언형
-- Declare the result for Snowflake
CREATE DYNAMIC TABLE logistics.summary
TARGET_LAG = '1 hour'
WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*)
FROM shipments
GROUP BY 1;
스트림 + 태스크: 명령형
-- You control every step
CREATE TASK process_events
SCHEDULE = '5 MINUTE'
WHEN SYSTEM$STREAM_HAS_DATA
('events_stream')
AS CALL logistics.process_new_events();
SELECT name, state, refresh_start_time, refresh_end_time
FROM TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
NAME_PREFIX => 'HARBR_DB.DELIVERY_SUMMARY.', ERROR_ONLY => TRUE
)
)
ORDER BY name, data_timestamp;
| NAME | TRIGGER | STATE | START | END |
|---|---|---|---|---|
| DELIVERY_SUMMARY | SCHEDULED | SUCCEEDED | 2026-03-01 05:00:00 | 2024-03-01 05:00:08 |
| DELIVERY_SUMMARY | SCHEDULED | FAILED | 2026-03-01 04:00:00 | 2024-03-01 04:00:03 |
Snowflake 데이터 파이프라인 자동화