📖
[Snowflake] UDFを試してみた (スカラーUDF編)
UDFの種類
snowflakeのudfには以下の2種類があるようです。[参考]
今回はこのうちScalar UDFを試してみます
- Scalar UDF
入力行ごとに1つの出力行を返す - Tabular UDF
入力行ごとに表形式の値を返す
UDFの定義
生年月日を受け取って年齢を計算するUDFの定義がこちらです。Pythonで書いています。
Python, Java, Javascript, Scala などが使用できるようです。[参考]
create or replace function birthday2age(birthday string)
returns int
language python
runtime_version = '3.9'
handler = 'main'
as
$$
import datetime
def main(birthday):
today = datetime.date.today()
birthday = datetime.datetime.strptime(birthday, "%Y-%m-%d")
age = (int(today.strftime("%Y%m%d")) - int(birthday.strftime("%Y%m%d"))) // 10000
return age
$$;
このコードを実行すると、実行時に指定している DATABASE.SCHEMA
の下にUDFが作成されています。
作成したUDFの利用
作成したUDFはSELECT文の中で利用できます
SELECT BIRTHDAY2AGE('1999-01-01')
-> 24
Discussion