HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみた

2023.08.03

さがらです。

HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみたので、その内容を本記事でまとめてみます。

dbtのexposureとは

まず前提知識として、dbtの「exposure」ですがdbtで定義した各Modelの使い道を記述できる機能です。

実際には、下記のようなYAML形式のファイルでexposureを定義します。このYAMLでは、dbtのModelがBIツールのダッシュボードとして使われているので、その内容が定義されています。(dbt exposureの公式Docより引用)

version: 2

exposures:

  - name: weekly_jaffle_metrics
    label: Jaffles by the Week
    type: dashboard
    maturity: high
    url: https://bi.tool/dashboards/1
    description: >
      Did someone say "exponential growth"?

    depends_on:
      - ref('fct_orders')
      - ref('dim_customers')
      - source('gsheets', 'goals')
      - metric('count_orders')

    owner:
      name: Callum McData
      email: data@jaffleshop.com

dbt exposure syncとは

前述したdbtのexposureですが、現状はユーザーが手書きで定義していくしかありません。正直、大変ですよね…

そこで、Hightouchのdbt exposure syncの出番です!

Hightouchのdbt exposure sync機能ならば、exposureの記述をHightouch側で自動で行ってCommitしてくれるため、dbtのModelがHightouchで使われている場合にユーザー側で手作業での記述が不要となります。

以下は公式ドキュメントですが、手順や動画もありますのでこちらもぜひご覧ください。

事前準備

というとで早速dbt exposure syncを試していきたいのですが、事前準備がありますので、その内容について記します。

HightouchとdbtのGitリポジトリが連携済であること

このdbt exposure sync機能はHightouchからdbt用のGitリポジトリに対して直接Commitするため、事前にHightouchとdbtのGitリポジトリが連携済である必要があります。

こちらの手順については、下記のブログでも試しておりますのでぜひこちらを参考にしてもらえると嬉しいです。

Hightouch上でdbt Modelを用いたSyncを1つ定義

今回試すdbt exposure sync機能は、dbt Modelを用いたSyncが必須となります。(exposureとして定義するため当たり前ではあるのですが…)

そのため、今回はdbt Modelをスプレッドシートにエクスポートするという非常にシンプルなSyncを事前に定義しておきました。

dbt exposure syncを有効にする

では、事前準備が済んだらdbt exposure syncを有効にしてみます!

Hightouchの画面左のメニューからExtensionsを押します。

dbt modelsを選択します。

dbtと連携済のSourceを選択します。

dbt Exposures Syncという項目があるのでこれを有効化し、Saveを押します。

これでdbt exposure syncの有効化は完了です!

実際にGitリポジトリにexposureが追加されるか確認してみる

有効化した後で、Full resyncを押してみます。

Sync Status欄のランプが緑色になったら、完了です!

この状態で対象のGitリポジトリのmainブランチを見てみると、modelsフォルダ内にyamlファイルが追加されています。

このファイルを見てみると、exposureが追記されていました。今後他のdbt Modelを用いたSyncを追加すると、このファイルに追記されていく仕様となっております。

exposureが追加されたため、dbt CloudからもMainブランチの内容をPullして確認してみると、無事にexposureが記述されたファイルが確認でき、リネージも確認できました!

最後に

HightouchのSync処理をdbtのexposureとして登録できる「dbt exposure sync」を試してみました。

この機能があれば、dbtで開発する前にHightouchの処理に影響が及ぶ可能性があることに気づいたり、Hightouchでよく使用されている・使用されていないModelの確認にもつなげることが出来ると思います。

設定も難しくないため、ぜひdbtとHightouchを併せて使用される方には試して頂きたい機能です!