Snowflake의 사용자 정의 함수(UDF)

Snowflake의 데이터 타입과 함수

Jake Roach

Field Data Engineer

사용자 정의 함수(UDF)란?

복잡한 로직을 하나의 재사용 가능한 함수로 “포장”합니다

$$

  • 더 읽기 쉬움
  • 실수 가능성 감소
  • 다른 사람과 로직 공유

$$

$$

                      ... 자세히 살펴보겠습니다!

사용자 정의 함수 개념을 보여주는 이미지.

Snowflake의 데이터 타입과 함수

UDF로 코드 리팩터링

SELECT
    first_name, last_name, school_name,

    CONCAT(
        first_name,
        '.',
        last_name,
        '@',
        school_name,
        '.com'
    )

FROM STUDENTS.personal_info;
SELECT
    first_name, 
    last_name, 
    school_name,

-- 재사용 가능, 가독성 높음 build_email_address( first_name, last_name, school_name ) AS email_address
FROM STUDENTS.personal_info;
Snowflake의 데이터 타입과 함수

UDF 정의하기

CREATE OR REPLACE FUNCTION <name> (

-- 인수와 타입 지정 <arg1> <type1>, <arg2> <type2>, ... )
RETURN <type> -- 반환 타입 선언
AS $$ -- 여기에서 함수를 정의합니다 $$

$$

$$

  1. CREATE OR REPLACE FUNCTION
  2. 함수명 지정
  3. 괄호 안에 각 인수의 이름과 타입 지정
  4. RETURN 타입 선언
  5. 로직을 $$ ... $$에 정의
Snowflake의 데이터 타입과 함수

이메일 주소 만들기

CREATE OR REPLACE FUNCTION build_email_address(

first_name TEXT, last_name TEXT, school_name TEXT
)
RETURN TEXT
AS $$ CONCAT(LOWER(first_name), '.', LOWER(last_name), '@', LOWER(school_name), '.com') $$;
Snowflake의 데이터 타입과 함수

UDF 사용하기

SELECT
    first_name, last_name, school_name,
    build_email_address(first_name, last_name, school_name) AS email_address

FROM STUDENTS.personal_info;
      first_name  |  last_name  |  school_name  |        email_address
     ------------ | ----------- | ------------- | ----------------------------
       Ryan       |  Cohen      |  Harvard      |  [email protected]
       Tatiana    |  Doyle      |  Stanford     |  [email protected]
       Pankaj     |  Pandey     |  MIT          |  [email protected]
       Jake       |  Roach      |  Purdue       |  [email protected]
Snowflake의 데이터 타입과 함수

Ayo berlatih!

Snowflake의 데이터 타입과 함수

Preparing Video For Download...