dbt の hook で UDF を作成する

2025年2月2日 engineering

こんにちは、 @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-startdbt build, dbt compile, dbt docs generate, dbt run, dbt seed, dbt snapshot, dbt test などの前に発火されるようです。

まとめ

今回は dbt の hook を使って UDF などを作る方法について書きました。 dbt 管理便利そうなのでしばらく運用しようとしてみようと思います。

この記事をシェア