동적 테이블

Snowflake 데이터 파이프라인 자동화

Emily Melhuish

Technical Curriculum Developer, Snowflake

동적 테이블 vs 스트림과 태스크

동적 테이블:

Screenshot 2026-05-11 at 11.14.23 am.png

  • SQL 선언형 구문으로 데이터 파이프라인 변환 간소화
  • 자동 새로 고침 처리
  • Snowflake가 감지, 예약 및 병합

스트림과 태스크:

Screenshot 2026-05-11 at 11.14.13 am.png

1 * Snowflake Learning Material
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: 데이터 지연 감소

사용자와 Snowflake 간의 최신성 계약

TARGET_LAG 값 효과
'5 minutes' 최대 5분 지연 — 빈번하게 새로 고침
'1 hour' 새로 고침 빈도 낮음 — 컴퓨팅 사용량 절감
DOWNSTREAM 다운스트림 의존성에서 지연 추론 — 체인 테이블에 적합
Snowflake 데이터 파이프라인 자동화

전체 새로 고침 vs 증분 새로 고침

증분 새로 고침

  • 변경된 소스 행만 정확히 추적
  • 영향받은 행만 새로 고침 — 빠르고 비용 효율적
-- Incremental-friendly: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

전체 새로 고침

  • 전체 쿼리를 재처리
  • 특정 집계 및 집합 연산에 필요
Snowflake 데이터 파이프라인 자동화

동적 테이블 체이닝

파이프라인 다이어그램 — delivery_events (소스) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • 각 변환은 고유한 쿼리를 가진 별도의 동적 테이블
  • 새로 고침이 체인을 따라 자동으로 전파
  • DOWNSTREAM 지연은 다음 테이블의 요구에 따름 — 과도한 새로 고침 방지
Snowflake 데이터 파이프라인 자동화

동적 테이블 vs 스트림과 태스크

동적 테이블: 선언형

  • 출력을 정의하면 Snowflake가 새로 고침 관리
  • 분석/리포팅 레이어에 적합
-- 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();
Snowflake 데이터 파이프라인 자동화

DYNAMIC_TABLE_REFRESH_HISTORY

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 데이터 파이프라인 자동화

연습해 봅시다!

Snowflake 데이터 파이프라인 자동화

Preparing Video For Download...