1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dbt-osmosis を使用した自動YAML管理の効率化について

Last updated at Posted at 2024-10-31

はじめに

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 .

スクリーンショット 2024-10-31 12.20.05.png

このコマンドにより、データベースのカラム情報やデータ型が 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を生成してくれます。

スクリーンショット 2024-11-01 15.16.52.png

まとめ

dbt-osmosis を使うことで、dbt プロジェクト内のYAMLファイル管理が大幅に効率化されます。データベーススキーマに基づいて自動生成されたドキュメントにより、手動の更新作業が軽減され、信頼性も向上します。dbt によるモデル管理をさらにスムーズにしたい方には、dbt-osmosis の活用をぜひおすすめします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?