Hàm do người dùng định nghĩa trong Snowflake

Kiểu dữ liệu và Hàm trong Snowflake

Jake Roach

Field Data Engineer

Hàm do người dùng định nghĩa (UDF) là gì?

"Gói" logic phức tạp vào một hàm dùng lại

$$

  • Dễ đọc hơn
  • Giảm sai sót
  • Chia sẻ logic với người khác

$$

$$

                      ... hãy xem kỹ hơn!

Hình minh họa ý tưởng về hàm do người dùng định nghĩa.

Kiểu dữ liệu và Hàm trong Snowflake

Tái cấu trúc mã với 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,

-- Có thể tái sử dụng, dễ đọc build_email_address( first_name, last_name, school_name ) AS email_address
FROM STUDENTS.personal_info;
Kiểu dữ liệu và Hàm trong Snowflake

Định nghĩa UDF

CREATE OR REPLACE FUNCTION <name> (

-- Chỉ định tham số và kiểu <arg1> <type1>, <arg2> <type2>, ... )
RETURN <type> -- Khai báo kiểu trả về
AS $$ -- Định nghĩa hàm tại đây $$

$$

$$

  1. CREATE OR REPLACE FUNCTION
  2. Đặt tên hàm
  3. Trong ngoặc, chỉ định tênkiểu của từng tham số
  4. Khai báo kiểu RETURN
  5. Viết logic trong $$ ... $$!
Kiểu dữ liệu và Hàm trong Snowflake

Tạo địa chỉ email

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') $$;
Kiểu dữ liệu và Hàm trong Snowflake

Sử dụng 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]
Kiểu dữ liệu và Hàm trong Snowflake

Vamos praticar!

Kiểu dữ liệu và Hàm trong Snowflake

Preparing Video For Download...