[Hex] dbtと連携してみた

dbtの連携も増えてきた
2022.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスの玉井です。

Hexはdbtと連携できる機能があります。当社はdbtのパートナーということもあり、試さなわい訳にはいかないため、実際にやってみました。

Hexとは?

以下の記事をどうぞ。

dbtと連携するとどうなる?

Hexは、同一画面上から、接続しているDWHのテーブル等を専用エクスプローラーで調べたり選んだりすることができます。dbtと連携すると、テーブル等に、dbt側の情報も合わせて確認できるようになります。

やってみた

dbtと連携するための条件

以下の通りです。一部、ドキュメントにも書かれていないことがありました(サポートに聞いた)。

  • dbt側でService Tokenが作成されていること
    • Job AdminとMetadata Onlyの権限が与えられていること
  • dbt側に何らかのJobが設定されていること
    • 一度は実行できていること
  • dbt側でモデルの生成ができていること
  • dbt側でドキュメントが生成できていること

ちなみに、Service Token(サービスアカウント)は、dbtの契約がTeamプラン以上じゃないと使用できません。そのため、(各種プランとは関係なく使える)dbt coreでは、この連携を使うことはできません。

dbt側の準備

上記の通りなので、これ以上説明することはあまり無いのですが、連携に成功した時のService Tokenの設定について、ここに残しておきます。

Account SettingsからService Tokenのメニューに行きます。

Job AdminとMetadata Onlyの権限を設定します。

Tokenの作成に成功すると、Token自体が出てくるので、忘れずコピっておきます。

Hexにdbtの情報を連携する

どこに入力するのか?ですが、DWHの設定の中にあります。今回はSnowflakeを使用している前提でいきます。

HexのSnowflake設定画面に、ひょっこりdbtオプションがあるので、ONににします。

すると、3つの情報を入れるポップアップが出てきます。

Service Tokenは、そのまま入れればOKです。残りのAccount IDとProject IDは何を入れればいいのでしょうか。

これは公式ドキュメントの説明がわかりやすいので、引用します。

Account ID and Project ID can be most easily found in the URL of the “Jobs” page for your project, following this structure: https://cloud.getdbt.com/#/accounts//projects//jobs/

連携させたいプロジェクトのURLに含まれている数値、ということですね。

Hex側でdbtの情報を確認してみる

前述したdbt側の条件が揃っていれば、Hex上でdbt側の情報が閲覧できます。

といっても、いきなりdbt専用メニューが出てくるわけではありません。DWHのエクスプローラーでテーブル等を見た時、それがdbtで生成したモデルであれば、dbtの情報が出るようになっています。

dbtと関係無いテーブルを見ても何もでませんが…

dbtで生成したモデルを見ると、こうなります。

見ればわかりますが、dbt側で設定されているdescriptionなんかも全て反映されています。データを選ぶ時にわかりやすいですね。

他にも細かい機能があり、例えばこのモデルが最後に生成された日時や、生成の際にクリアしたテストについても確認できます。

また、各カラムから、直接dbtのドキュメントに飛ぶこともできます。

dbtの情報を見つつ、適切なデータセットを選んで分析を開始することができます。

おわりに

Hexでの分析をより良くするために、dbt側をしっかり作っていく、という意識が芽生えるかもしれませんね。