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 中的数据类型与函数

Vamos praticar!

Snowflake 中的数据类型与函数

Preparing Video For Download...