OpenMetadata SaaSでdbt Cloudのメタデータを抽出してみた
さがらです。
OpenMetadataでは、dbtで定義した各クエリやタグなどのメタデータを抽出することが可能です。
本記事ではdbt Cloudを介して、dbtに関するメタデータをOpenMetadataに連携する際の手順をまとめてみます。
前提
基本的には、このドキュメントの手順に沿って行っていきます。
また、本記事のタイトルでは「OpenMetadata SaaS」とは書いていますが、中身はOSSのOpenMetadataと全く一緒です。クラスタの構築や運用周りをすべて担ってくれるのがSaaS版となっております。
OpenMetadata SaaSのフリートライアル開始手順については、こちらのブログをご覧ください。
各製品のバージョン
- OpenMetadata SaaS
- Tokyoリージョン
- OpenMetadata
- 0.13.2
事前準備
まず、事前に行うことがありますので、その内容について記述していきます。
抽出対象のdbt projectでのジョブ実行
抽出対象のdbt projectにおいて、一度DeploymentのEnvironmentにてジョブを実行しておく必要があります。これはArtifactsであるmanifest.json
とcatalog.json
が必要なためです。
catalog.json
を生成するには、ジョブの設定でGenerate docs on run
にチェックを入れる必要があるため、この点だけご注意ください。
dbt CloudでのService account tokensの準備
OpenMetadataがdbt Cloudに接続するには、「Service account tokens」を使用します。
対象のdbt CloudのAccount Settingsにおいて、Service Tokensの画面から+ New Token
を押します。
Permission SetはJob Admin
とMetadata Only
を定義した上で、Service tokenを作成します。
Save
を押すと、画面上にTokenが出てきますので、これを忘れずにコピーしておきましょう。
dbtで開発を行っているDWHの連携設定
dbtとOpenMetadataを連携させるには、事前に対象のDWHをOpenMetadataと連携させておく必要があります。
参考までに、SnowflakeとBigQueryの連携を試した際の記事を以下に記しておきます。
OpenMetadata上での連携設定
では、OpenMetadata上でdbtのメタデータを抽出するための設定を行っていきます!
まず、Database Services
から連携済のDWHの設定画面を開きます。ここでは、Snowflakeで設定を行ったものを使用します。
対象のDWHの設定画面から、Ingestions
タブで右上のAdd Ingestion
を押し、続けてAdd dbt Ingestion
を押します。
dbtの連携設定画面が出てきますので、Name
を任意のOpenMetadata内でユニークな値に変更して頂いた上で、dbt Cloudと連携させるためにdbt Configuration Source
はCloud Config Source
を指定します。
続けて、dbt Cloudと連携するために必要な各情報の入力を行っていきます。
dbt Cloud Account Id
:dbt CloudでIDEを開いたときのURL「https://cloud.getdbt.com/develop/xxxxx/projects/yyyyyy」のうち、「xxxxx」の5桁の値を入力dbt Cloud Authentication Token
:事前準備を行った際に取得したTokenを入力dbt Cloud Project Id
:dbt CloudでIDEを開いたときのURL「https://cloud.getdbt.com/develop/xxxxx/projects/yyyyyy」のうち、「yyyyyy」の6桁の値を入力Update Description
:各テーブル・カラムのDescriptionをdbtで定義されたDescriptionに書き換えるかを指定
これらの設定値の入力後、右下のNext
を押します。
続いて、抽出のスケジュールを選択します。設定を終えたら、Add & Deploy
を押します。
下図のように表示されたら、抽出の設定は完了です!
ちなみに、対象のIngestionsを手動実行することも出来ます。対象のIngestionのActions
列にてRun
を押せばOKです!
対象のdbt projectのファイル数にもよると思いますが、私が同期したときには1~2分程度で同期が完了しました。
最後に
dbt Cloudを介して、dbtに関するメタデータをOpenMetadataに連携する際の手順についてまとめてみました。
このドキュメントにもあるように、dbtで定義したDescriptionをOpenMetadata上のDestinationに適用したり、テーブルリネージを生成したり、ということも可能ですので、ぜひ活用してみてください!