4
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_columnsでdescriptionカバレッジを測りたいときの設定(しないとカバレッジ100%よ)

Last updated at Posted at 2025-03-19

 ハイサイ!社内向けデータ分析基盤の開発者です。

目的: メタデータカバレッジの可視化

 snowflake + dbtのデータ基盤を運用しています。データカタログを充実させて全社のデータ利活用促進するために、メタデータのカバレッジ向上をやってます。現状把握と効果測定のために、まずカバレッジを可視化します。

メタデータとは

 メタデータはデータを説明するデータです。例えばデータモデルの内容や用途。うちではデータモデルと同じ名称のYMLファイルでやってます。
 このYMLには、meta, tags, descriptionなどいろいろありまして、それぞれの使い道がありますが、この記事で言ってる「メタデータカバレッジ」は「descriptionの記載率」のことを指します。

方法: dbt_columns.descriptionの記載割合を計算

 elementaryを導入したから、dbtの実行結果について何種類のテーブルはsnowflakeへ配置されています。
 その中にdbt_columnsというテーブルがありまして、buildしたデータモデルの各カラムの情報を格納しています。このdbt_columnsにdescriptionという列があり、この列は、各カラムのdescriptionをそのまま持ってきます。descriptionがnullでもなく空でもないレコード数の割合でメタデータのカバレッジを測ります。

結果: 100%なんて!

 一回測ってみたら結果100%です。え?と思って公式ドキュメンを見たら、dbt_columnsについて以下の記載がある:

Data about all the columns that are documented in the yml files.

 つまりdocumentedしてないcolumnsはこのdbt_columnsにそもそも存在しない。

解決: 公式にないconfig設定

 理想の状態はdbt_columnsにすべてのcolumnsが存在することです。
 そもそもdocumentedとは何でしょう。
 ソースコードを読むと、こういう条件でdocumented columnsをフィルターしてることが分かりました。

48: {% if elementary.get_config_var('columns_upload_strategy') == 'all' or column_node.get('description') or has_meta or has_tags %}

 configのcolumns_upload_strategyがallに設定してるならいいけど、そうじゃない場合descriptionかmetaかtagsかどれ一つ記載のある場合documentedとして判断するよね。それはdocumentedの意味か。

 columns_upload_strategyを公式ドキュメンで検索したら結果なかったが、gitで検索した結果:

35:    'columns_upload_strategy': 'enriched_only',

 ということでdbt_project.yml(dbtの設定ファイル)のvarsの部分に以下を追記しました。そして解決しました。

 elementary:
   columns_upload_strategy: "all" # contains all columns even without description into dbt_columns

 elementaryのバージョンによってこのconfigが違います。
 v0.16.2まで、upload_only_columns_with_descriptionsでしたの。v0.16.2までのelementaryを使ってる場合、varsにupload_only_columns_with_descriptions: falseを追記することになります。

終わり

 ソースコードを読めば簡単に解決するもんですが、実は本件に一番難しかったことは、ソースコードの場所を見つかることです。公式ウェブサイトにChatGPTみたいなダイアログがありまして、そこでいろいろ聞き方を変えたりしてやっと言わせた。使ってみてくださいね!

image.png

 では再見(ツァイチエン)!

4
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
4
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?