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のカラムレベルリネージを生成する方法

1
Last updated at Posted at 2025-12-04

dbtプロジェクトのカラムレベルリネージを生成する場合、無償版のdbt Coreでは生成機能が提供されておらず有償版のdbt Cloudやサードパーティー製品を使う必要があります。数あるサードパーティー製品のうち、「dbt-colibri」は無償かつオンプレ (リネージ生成用に別途クラウドサービスを使わない1) で生成できる特徴が魅力に感じたので本記事で紹介します。

dbt-colibriの特徴

dbt-colibriは次の特徴を備えており、有償製品・クラウドの利用が制限されている環境や手軽にリネージを確認・共有したいケースで特に有用です。

  1. 無償で利用可能なOSS (https://github.com/b-ned/dbt-colibri)
  2. オンプレでカラムレベルリネージを生成
  3. リネージの共有が簡単

リネージの生成には、dbtのコンパイル結果やDWH上に実体化されたテーブル・ビューから収集したメタデータのみを使用します。リネージ生成用に別途クラウドサービスを使うことはありません。

また、リネージはスタンドアロンのHTML形式で生成されるため共有も簡単です。次のリンクで公式のデモが公開されておりますので、お試しください。インタラクティブにモデル・カラムリネージや各モデルのメタデータ (モデルの種類、カラム一覧、ソースコードなど) を参照できます。

次の表は、カラムレベルリネージを生成するための製品をいくつかピックアップして比較しています。ほかの製品では有償だったりリネージ生成用途に別途クラウドサービスが必要だったりするので、それらの利用が難しい環境や手軽にリネージを確認したいケースではdbt-colibriが候補の1つになると思います。

製品 dbt Labs公式 リネージ生成用途のクラウドサービス未使用 無償 備考・製品URL
dbt Cloud Yes No No
dbt Fusion (β版) Yes Yes Limited 組織内のユーザ数が 15 人を超える場合は有償2
dbt Power User No No Yes https://github.com/AltimateAI/vscode-dbt-power-user
dbt-colibri No Yes Yes https://github.com/b-ned/dbt-colibri

dbt-colibriの使用方法

使用方法も簡単です。事前にdbtのモデルをDWH上に実体化したうえで、次の4コマンドを実行するとカラムレベルリネージを生成します。

# インストール
pip install dbt-colibri
# リネージ生成のためのメタデータ作成
dbt compile
dbt docs generate
# リネージ生成
colibri generate

生成先のパスはdbtプロジェクト下のdist/index.htmlになります。スタンドアロンのHTMLなので任意の場所に移動・複製してWebブラウザでの閲覧やほかの方への共有が可能です。

注意点として、事前にdbtのモデルをテーブルやビューとして実体化する必要があります。dbt docs generateコマンドがテーブル・ビューからメタデータを収集、ローカルに作成し、これをdbt-colibriが使用するためです。実体化していないモデルがあると、そのモデルのカラムリネージが欠落します。

仕様

2025年10月現在最新版のv0.2.7では、次のdbtアダプターをサポートしています。

  • Snowflake
  • BigQuery
  • Redshift
  • duckDB
  • Postgres
  • Databricks
  • Athena
  • Trino

生成したHTMLから次の情報をインタラクティブに確認できます。

  • モデルリネージ
  • カラムリネージ
    • プレビュー段階ですが、各カラムの加工を「Pass Through (加工なし)」「Rename」「Transformation (式・関数による加工)」「Unknown (そのほか)」の4種類に分類して表示することも可能です
  • モデルの種類 (ソース、テーブル、ビューなど)
  • モデルのカラム一覧
  • モデルのソースコードおよび、そのコンパイル結果
  • モデルのdescriptionプロパティ
  • など

例えばdbtモデル

SELECT
    Col1
  , Col2 AS Col2_renamed
  , CASE WHEN Col1 = 0 THEN Col3 ELSE Col4 END AS Col5
FROM {{ ref('example_model1') }}

からは次のリネージが生成されます。

LineageExsample

おわりに

本記事では、無償かつオンプレでdbtのカラムレベルリネージを生成可能なdbt-colibriを紹介しました。特に次のようなユースケースでは有力な選択肢となり得るので、リネージ生成方法検討やdbtのモデル読み込みの際の参考にしていただければ幸いです。

  • セキュリティポリシーなどによりクラウドサービスの利用が制限されている環境
  • リネージを無償・手軽に確認・共有したい場合

参考

dbt-colibri 公式ドキュメント

  1. dbtでテーブル・ビューをSnowflakeやDatabricksなどに作成している場合、それ以外のクラウドサービスを使わずにリネージを生成します。

  2. 2025年10月現在β版が公開されているdbt Fusionでは、公式のVS Code拡張機能からカラムレベルリネージを生成できます。ただしdbt Labsへのアカウント登録が必要で、組織内のユーザ数が15を超える場合は有償になります。

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?