こんにちは、 @kz_morita です。
dbt と Snowflake を使って開発をしていますが、Snowflake の UDF を作成する際に以前は
schemachage
などで行ってましたが、dbt の on-run-start
の hook を用いて管理する方法が良さそうだったのでメモします。
on-run-start の hook で UDF を作成する
on-run-start は、dbt_project.yml ファイルで指定することができます。
on-run-start:
- '{{ create_udf() }}'
以下のようなmacro を用意すると dbt run
などの実行前に UDF を作成できます。
{% macro create_udf() %}
create or replace function encode_uri_component("STR" VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
return encodeURIComponent(STR)
$$;
{% endmacro %}
ちなみに、on-run-start
は dbt build
, dbt compile
, dbt docs generate
, dbt run
, dbt seed
, dbt snapshot
, dbt test
などの前に発火されるようです。
まとめ
今回は dbt の hook を使って UDF などを作る方法について書きました。 dbt 管理便利そうなのでしばらく運用しようとしてみようと思います。