OpenMetadata SaaSでdbt Cloudのメタデータを抽出してみた

2023.02.06

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

さがらです。

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.jsoncatalog.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 AdminMetadata 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 SourceCloud 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に適用したり、テーブルリネージを生成したり、ということも可能ですので、ぜひ活用してみてください!