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

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...