Snowflake 데이터 파이프라인 자동화
Emily Melhuish
Technical Curriculum Developer, Snowflake
![]()
사용자 정의 함수(UDF)
권장 시작점
CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
CASE WHEN days <= 2 THEN 'Express'
WHEN days <= 5 THEN 'Standard'
ELSE 'Delayed' END $$;
SQL로 처리할 수 없을 때
CREATE FUNCTION parse_weight(label STRING)
RETURNS FLOAT LANGUAGE PYTHON
RUNTIME_VERSION = '3.9' HANDLER = 'parse'
AS $$ def parse(s): return float(s.split('kg')[0]) $$;

UDF는 변환 레이어에 위치 — 원시 스토리지와 리포팅 사이
SELECT 내부에서 호출하며, 행당 하나의 값 반환SECURE 추가 시 다른 사용자에게 정의 숨김CALL로 단독 호출
CREATE OR REPLACE PROCEDURE archive_old_shipments(cutoff INT)
RETURNS STRING LANGUAGE SQL AS $$
DECLARE -- 1. Declare variables
rows_moved INT DEFAULT 0;
BEGIN -- 2. Begin the procedure
INSERT INTO shipments_archive -- 3. Execute SQL commands
SELECT * FROM shipments WHERE delivery_days > :cutoff;
rows_moved := SQLROWCOUNT;
DELETE FROM shipments WHERE delivery_days > :cutoff;
RETURN 'Archived ' || rows_moved -- 4. Return the result
|| ' shipments.';
END; -- 5. End the procedure
$$;
| UDF | 저장 프로시저 | |
|---|---|---|
| 호출 방법 | SELECT |
CALL |
| 반환값 | 행당 단일 값 | 단일 값 |
| DML 실행 가능 | 아니요 | 예 |
| 언어 | SQL, Python, Java, JS | SQL (Snowflake 스크립팅), Python, Java, JS, Scala |
| 파이프라인 역할 | 데이터 변환 | 로직 오케스트레이션 |
Snowflake 데이터 파이프라인 자동화