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

Snowflake는 세 가지 수준에서 결과를 캐싱하며, 범위와 유지 기간이 각기 다릅니다

| 조건 | 캐시 미스 발생 시… |
|---|---|
| 쿼리 텍스트가 정확히 일치 | 대소문자, 공백, 별칭이 다른 경우 |
| 재사용 불가 함수 없음 | 실행마다 바뀌는 함수: RANDOM |
| 기반 테이블 변경 없음 | 마지막 실행 이후 DML, 재클러스터링, 통합 |
| 지속된 결과 사용 가능 | 24시간 TTL 만료(재사용 없을 경우) 또는 31일 경과 |
| 역할에 필요한 권한 있음 | SELECT: 역할에 권한 없음 / SHOW: 다른 역할 사용 |

웨어하우스 캐시
메타데이터 캐시
파티션 프루닝 방지:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
파티션 프루닝 허용:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
SELECT * 사용 지양
-- Reads every column
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Reads only what's needed
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
암묵적 크로스 조인 사용 지양
-- Missing join condition = Cartesian
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- Explicit JOIN with ON condition
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Snowflake 데이터 파이프라인 자동화