🙌
dbt project evaluatorを使ってメタデータをテーブルとして取得する
やりたいこと
dbtにはdocumentationやexploreなど、さまざまなカタログ機能が開発されているが、データ管理のために、そのカタログに記載されている情報を一覧化したテーブルとして欲しいことがある。
頑張ってコードを書けば、そうしたメタデータ群を取得できるようだが、すでに内部処理で同じことをやっているdbt_project_evaluatorというパッケージがあるので、そちらを使ってみる。
dbt_project_evaluatorの中間テーブル
dbt_project_evaluatorの本来の用途は、そのdbtのレポジトリが、ベストプラクティスに反していないかを自動でチェックしてくれるツールである。最終的には20個程度のテストが走るパッケージだが、そのテストまでの過程では、今回我々が欲しいメタデータの一覧が主に以下のような中間テーブルとして生成されている。
- stg_nodes
- stg_sources
- stg_exposures
- stg_metrics
stg_nodesの一部カラムがこちら。他にもmetaフィールドなどがある。
何に使うか?
統計情報の取得や、追加で動かすバッチのソースにするなど、各自の利用環境・悩みに応じて無数に使い道はあると思うが、私が以下のようなケースで使っている。
- incrementalモデルの一覧を取得し、本番環境からdbt cloudでの各自の開発環境にコピーする
- metaフィールドの一覧を取得し、不要なkeyが増えていないか統制を行う
他の手段では、BigQueryだと各テーブル・Viewに付与されるラベルでも頑張ることはできるが、dbt_project_evaluatorの中間テーブルを使うことで、より柔軟にメタデータを取得することができる。
最後に、dbt_project_evaluator自体もプルリクエスト作成と同時に実行されるように設定しておくと、チームで開発する際のレビューの対象を減らせたりと非常に便利なパッケージであるので、本来の目的でも是非使ってみることをおすすめする。
Discussion