dbtのpersist_docsを設定してみた

dbtのpersist_docsの設定を試してみました

はじめに

データアナリティクス事業本部のおざわです。 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を試してみたので共有でした。

参考リンク