사용자 정의 함수와 저장 프로시저

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

Emily Melhuish

Technical Curriculum Developer, Snowflake

UDF란?

nanobanana: half: 열린 자물쇠와 닫힌 자물쇠 아이콘이 나란히 있는 미니멀 디자인, DataCamp 네이비 블루와 그린, 흰색 배경, 텍스트 없음

사용자 정의 함수(UDF)

  • 기본 제공 SQL 함수 이상의 사용자 정의 연산
  • SQL, Python, Java, Scala, JavaScript로 작성
  • DDL/DML 불가 — 값 반환만 가능
  • 표준 또는 SECURE (호출자에게 로직 숨김)
  • 행당 스칼라 값 또는 테이블 반환
Snowflake 데이터 파이프라인 자동화

SQL UDF

권장 시작점

CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
  CASE WHEN days <= 2 THEN 'Express'
       WHEN days <= 5 THEN 'Standard'
       ELSE 'Delayed' END $$;
Snowflake 데이터 파이프라인 자동화

Python 및 기타 언어 UDF

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]) $$;
Snowflake 데이터 파이프라인 자동화

파이프라인에서의 UDF

 

 

mermaid: UDF 변환 레이어 파이프라인

UDF는 변환 레이어에 위치 — 원시 스토리지와 리포팅 사이

  • SELECT 내부에서 호출하며, 행당 하나의 값 반환
  • 여러 쿼리에서 공통으로 사용되는 비즈니스 로직 중앙화
  • SECURE 추가 시 다른 사용자에게 정의 숨김
Snowflake 데이터 파이프라인 자동화

저장 프로시저란?

  • 변수 선언, 결과 반복, 오류 처리
  • 여러 테이블에 걸쳐 DML 실행
  • CALL로 단독 호출

mermaid: datacamp-purple: 저장 프로시저 오케스트레이션 흐름

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

저장 프로시저: Snowflake 스크립팅

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

UDF vs 저장 프로시저

UDF 저장 프로시저
호출 방법 SELECT CALL
반환값 행당 단일 값 단일 값
DML 실행 가능 아니요 예
언어 SQL, Python, Java, JS SQL (Snowflake 스크립팅), Python, Java, JS, Scala
파이프라인 역할 데이터 변환 로직 오케스트레이션
Snowflake 데이터 파이프라인 자동화

연습해 봅시다!

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

Preparing Video For Download...