はじめに
データアナリティクス事業本部のおざわです。 dbtのpersist_docsの設定を触る機会があったのでブログにしてみました。
今回使用したdbtのバージョンです。
❯ dbt debug
02:45:35 Running with dbt=1.7.3
02:45:35 dbt version: 1.7.3
・・・略・・・
02:45:35 adapter type: redshift
02:45:35 adapter version: 1.7.0
persist_docsとは
persist_docsは、dbtのプロジェクトで設定できるオプションです。このオプションを設定しておくと、モデルやシードといった各種リソース(sourcesには非対応)に対して、yamlファイルに記載したテーブルやカラムのdescriptionの内容をデータベースに永続化してくれます。
データの利用者が直接DBを見てdbtのドキュメントと同じ内容を確認できますし、管理の面でもyamlに書いておけばすむので楽ですね。
サポートしているアダプター
現時点で対応しているアダプターは以下のとおりです。 Databricksに関してはいくつか注意書きがありましたので、詳しくはドキュメントをご参照ください。
- Postgres
- Redshift
- Snowflake
- BigQuery
- Databricks
- Apache Spark
設定方法
設定方法はドキュメントにあるようにyamlに書いてモデル全体に適用したり、configブロックを使用してSQLファイルに書くこともできます。
yamlで設定する場合:
dbt_project.yml
version: 2
models:
my_dbt_project:
+persist_docs:
relation: true
columns: true
configブロックでの設定例:
my_model_with_description.sql
{{ config(
persist_docs={"relation": true, "columns": true}
) }}
select ...
descriptionは下記の内容をmodelのyamlファイルに書いています。
model.yml
version: 2
models:
- name: customers
description: My dearest customers
columns:
- name: customer_id
description: Key to identify
- name: first_order_date
description: Customer first ordered from us
設定後にdbt run
を実行します。
確認方法
今回はRedshiftを使用していますのでRedshiftでの確認方法になります。
以下のSQLを走らせると、yamlに記載した各descriptionが設定されていました。
テーブルのdescription
select obj_description('my_dbt_schema.test_table'::regclass);
カラムのdescription(1つ目のカラム)
select col_description( 'my_dbt_schema.test_table'::regclass, 1::integer)
おわりに
以上、persist_docsを試してみたので共有でした。