はじめに
dbt
では、モデルやソースのドキュメント管理にYAMLファイルを用いますが、手動での管理は面倒です。そこで、dbt-osmosis
というツールを使用することで、YAMLファイルの生成や更新が自動化され、作業が効率化されます。
このブログでは、dbt-osmosis
を使った設定例と実行結果について説明します。
dbt-osmosis
の概要
dbt-osmosis
は以下のような機能を持ち、dbt
プロジェクト内のYAMLファイル管理を簡略化します:
- 自動ドキュメント生成:モデルやソースに対応するカラム情報やデータ型を自動でYAMLに反映。
- 整然としたYAML管理:定義済みの設定に基づいてYAMLファイルの並び替えや不要なカラム削除。
- ストリームリット対応のインターフェース:リアルタイムでのクエリテストとドキュメント更新の可視化。
設定例
dbt_project.yml
の設定
dbt-osmosis
を使用するには、dbt_project.yml
に +dbt-osmosis
の設定を追加します。
name: 'data_example_project'
config-version: 2
profile: 'data_example'
model-paths: ["models"]
seed-paths: ["seeds"]
test-paths: ["tests"]
analysis-paths: ["analysis"]
macro-paths: ["macros"]
target-path: "target"
clean-targets:
- "target"
- "dbt_modules"
- "logs"
models:
data_example:
+dbt-osmosis: "{model}.yml" # ←「ここを追加する」:各モデルに対応するYAMLファイルを自動生成
+materialized: table # デフォルトでテーブルとして素材化
project_summary_view:
+materialized: view
project_metrics_dwh:
+materialized: table
dbt-osmosis
実行前のYAMLファイル例
以下は、dbt-osmosis
実行前のschema.yml
です。
version: 2
sources:
- name: DUMMY_DB # データベース名
schema: DUMMY_SCHEMA # スキーマ名
tables:
- name: PROJECT_SUMMARY # ダミーテーブル名
dbt-osmosis
実行コマンド
以下のコマンドで dbt-osmosis
を実行し、YAMLファイルの自動生成・更新を行います:
dbt-osmosis yaml document #全てのschema.yml
dbt-osmosis yaml document --project-dir . --profiles-dir .
このコマンドにより、データベースのカラム情報やデータ型が schema.yml
に反映されます。
dbt-osmosis
実行後のYAMLファイル例
dbt-osmosis
の実行により、自動的にカラムとデータ型の情報が追加されたYAMLファイルは以下の通りです。
version: 2
sources:
- name: DUMMY_DB # データベース名
schema: DUMMY_SCHEMA # スキーマ名
tables:
- name: PROJECT_SUMMARY # ダミーテーブル名
columns:
- name: PROJECT_ID
description: ''
data_type: VARCHAR
- name: PROJECT_NAME
description: ''
data_type: VARCHAR
- name: MANAGER_NAME
description: ''
data_type: VARCHAR
- name: START_DATE
description: ''
data_type: DATE
- name: END_DATE
description: ''
data_type: DATE
- name: BUDGET
description: ''
data_type: NUMBER
- name: COST
description: ''
data_type: NUMBER
- name: PROFIT
description: ''
data_type: NUMBER
- name: STATUS
description: ''
data_type: VARCHAR
# 他のダミーカラムが追加されます
さらに
IDE環境にCursorもしくはGithub copilotを使用している場合、以下のようにdescriptionの生成をお願いすると、簡単なdescriptionを生成してくれます。
まとめ
dbt-osmosis
を使うことで、dbt
プロジェクト内のYAMLファイル管理が大幅に効率化されます。データベーススキーマに基づいて自動生成されたドキュメントにより、手動の更新作業が軽減され、信頼性も向上します。dbt
によるモデル管理をさらにスムーズにしたい方には、dbt-osmosis
の活用をぜひおすすめします。