Castor上で定義したDescriptionをdbtに書き戻すことができる「Sync Back to dbt」機能を試してみた

2023.03.16

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

さがらです。

Castor上で定義したDescriptionをdbtに書き戻すことができる「Sync Back to dbt」機能を試してみたので、本記事でまとめてみます。

Sync Back to dbt機能とは

まず、Sync Back to dbt機能について説明します。

概要としては、Castorが2023年2月にリリースした機能で、Castor上で定義したDescriptionをdbtに書き戻すことが出来る、という機能です。

昨今のデータカタログはdbt上で定義したDescriptionをそのままデータカタログ上のDescriptionとして使用できる事が多いと思います。

しかし、実際にビジネスメタデータとなるDescriptionについて一番詳しいのはデータエンジニアやアナリティクスエンジニアではなく、各業務を遂行するビジネス部門の方である、ということが多いのではないでしょうか。 こんな時、ビジネス部門の方にdbtを使用してDescriptionを埋めてもらうことはスキルセット的にも難しいと思います。

そこで、Castorが今回リリースしたSync Back to dbt機能の出番です! この機能があれば、ビジネス部門の方にCastor上でDescriptionを記述してもらい、その内容を自動追記した上でGitHub上でブランチを切ることができます。これにより、入力はビジネス部門の方に行ってもらいつつ、Gitを用いたバージョン管理も可能になり、dbt上でビジネスメタデータを各エンジニアが入力する手間も省くことができます。

事前準備

ということで、早速Sync Back to dbt機能を試していきたいのですが、いくつか必要なことがありますので行っていきます。

GitHubリポジトリへのユーザー追加

Castorから直接GitHub上にプッシュできるように、Castorが管理するGitHubユーザーを、dbtのコードを管理しているリポジトリに対して追加する必要があります。

実際に追加するのは、「techcastor」というユーザーです。

対象のGitHubのリポジトリ上で、SettingsCollaboratorsManage Access欄からAdd peopleを押します。

「techcastor」を入力し、Add ~ to this repositoryを押します。

すると、Pending Inviteというステータスになります。私はここでCastorの担当の方に連絡をしました。

担当の方がInvitationを受け入れてくれたら、準備は完了です!

dbtで定義されたテーブルに対してCastor上でDescriptionを追加

Castor上で、dbtで定義されているcustomerテーブルの各カラムについて、下図のようにDescriptionを追加します。

一方で対象のテーブルについてdbt上では、models/schema.ymlを作成済の状態です。既にdbt上でcustomerテーブル、customer_idカラム、first_order_dateカラム、についてはDescriptionを定義済です。

version: 2

models:
  - name: customers
    description: 各Customerの注文情報を1レコードにサマリしたテーブル。(One record per customer)
    columns:
      - name: customer_id
        description: Primary key
        tests:
          - unique
          - not_null
      - name: first_order_date
        description: 顧客がまだ注文していない場合はNULL。(NULL when a customer has not yet placed an order)

試してみた

ということで早速、Sync Back処理を行ってみます!

やることは非常に簡単で、SettingsIntegrationsタブから、Sync back to dbtを押すだけです!

これを押すと、右上にポップアップメッセージが表示されます。「Sync Back処理が終わったら通知するよ、通常24時間以内に通知するよ」といった内容ですね。

この後、Castor社の方に対応いただき、7時間ほど経過して新しいブランチcastor-sync-backが対象のリポジトリ上に作られました!

ブランチを見てみると、models/schema.ymldescription# pushed from Castorというコメント付きで追加されていました。

また、yamlファイルを事前に作成していない場合は、対象のテーブルを作成するmodel名.ymlの形でyamlファイルが作られていました。

この内容で問題なければ、GitHub上でPull Requestを作成してMergeしてみます。

このあと、dbt Cloud上でGitHubからPullした上でMainブランチを確認してみると、無事にCastor上で定義したDescriptionが反映されていました!

最後に

Castor上で定義したDescriptionをdbtに書き戻すことができる「Sync Back to dbt」機能を試してみました。

2023年3月時点、他のデータカタログには類似機能がないはずです。ぜひ気になる方はCastorをトライアルしてみてください!