
ビジネスメタデータの入力がBIツールから可能に!Omniからdescriptionとexposureをdbtにプッシュする機能を試してみた
さがらです。
OmniではIDEから各フィールドのdescriptionを定義してdbtにプッシュする機能や、dbtのModelを使用しているダッシュボード情報をexposureとしてプッシュする機能が備わっています。(公式Docには特に記載がなさそうでした。コミュニティノートで軽く言及があります。)
この機能を試してみたので、本記事でその内容をまとめてみます。
前提条件
以下の設定を終えた状態とします。
- SnowflakeへのConnectionを作成済
- Connectionの中で、dbtとの連携設定も完了


- Connectionに対してModelを1つ作成し、そのModelはGitHubとの連携も終えて、Shared Modelの変更にはプルリクエストを必須としている状態(参考:公式Doc)

またdescriptionの編集については、Connectionを作成したユーザーとは別に対象のModelに対して「Querier」という権限を付与したユーザーを作成しておき、この「Querier」権限を持つユーザーから編集を行います。
※「Querier」権限ですが、OmniのユーザーライセンスはTableauやLookerのようにAdmin・Creator・Viewerと3種類あるのですが、真ん中のCreatorで使用できる権限となります。このユーザーライセンスと権限についての詳細は、公式Docをご覧ください。

Omniで定義したdescriptionをdbtへプッシュ ※「Querier」権限を持つユーザーから実施
OmniのShared Modelのdescriptionを修正する
まず、Omniで全ユーザーが共通利用するShared Modelのdescriptionを修正する必要があります。これはWorkbookレベルでブランチを切ってからでないとできないため、まずはWorkbookレベルで編集を行っていきます。
descriptionを編集したいModelと繋がっているDashboard(Workbook)を開き、右上のEditを押します。その後、右上のWorkbookを押してWorkbookの表示に切り替えます。


descriptionの編集はModelのコードを編集するIDEからのみ可能のため、上部のModel⇛Model layers⇛Workbookを押します。

あとは、各viewを開いてdescriptionを変更していきます。今回はcustomers.viewのdescriptionが元々英語であったため、日本語にしてみます。
- Before

- After

ここまで行ったら、一度Workbookへ正しく保存するため、パブリッシュを行います。

この後Workbookの画面に戻り、左側のModel Changesを押します。

そうすると、descriptionの変更を行ったフィールドが並んで表示されていると思います。これらの変更をOmniのShared Modelに反映させるため、下図の手順に沿って新しいブランチを作成します。


ブランチに切り替わったら、Add to branchを押して各フィールドの変更内容をブランチにコミットします。


その後、右上のCreate pull requestを押して、プルリクエストを発行しマージまで行います。これで、Workbookレベルで変更したdescriptionがShared Modelへ反映されました。

Shared Modelからdbtへプッシュ
続いて、dbtへのプッシュはShared ModelのIDEからでないとできないため、下図の手順に沿ってShared ModelのIDEを開きます。

変更したdescriptionが正しくShared Modelに反映されていることを確認した上で、画面上部のModelからPush to dbtを押します。

すると下図のように表示されるため、ブランチ名やコミットメッセージを必要に応じて修正したうえで、Create Pull Requestを押します。(dbtのexposureへの連携は、今操作しているQuerier権限のユーザーからはできません。)

GitHubで変更された箇所を確認すると、対象Modelのdescriptionを定義しているyamlに対して修正が正しく行われていることがわかります。

プルリクエストを発行してマージした後、参考までにdbt Cloudの画面から対象のyamlファイルを見ると、Omniで定義したdescriptionが反映されていました!

dbtのModelを使用しているダッシュボード情報をexposureとしてプッシュ ※「Connection Admin」以上の権限が必要
次に、dbtのModelを使用しているダッシュボード情報をexposureとしてプッシュしてみます。
事前準備:exposureとして連携するダッシュボードについて
事前に、dbtのModelを参照するダッシュボードを下図のように2つ作成しておきます。


Omniからexposureとしてプッシュ
では実際にOmniからexposureとしてプッシュしてみます。(対象のModelと紐づくConnectionの「Connection Admin」以上の権限が必要となります。)
Shared ModelのIDEを開きたいため、左のメニューのDevelopから、該当するModelを選択します。


画面上部のModel⇛Push to dbtを押します。

下図の画面が表示されますので、Sync exposuresにチェックを入れて、Create Pull Requestを押します。

GitHubで変更された箇所を確認すると、下図のように新しいyamlファイルが作成されていることがわかります。日本語タイトルのダッシュボードだとnameが___に変更されてしまっていますがlabelは日本語が正しく入っており、ownerの情報も自動で入れてくれるのはとてもありがたいですね。

この上でプルリクエストを作成してマージした上で、dbt Cloudから確認してみます。まずIDEから見ると、下図のように表示されます。ファイルが反映されているのはもちろん、リネージも問題なしですね!

一度dbt Cloudで適当なジョブを実行してdocs generateを実行し、dbt Catalogから確認すると下図のように確認できます。各ExposureからOpen in Dashboardを押すと、Omniのダッシュボードに直接リンクも出来ます!


最後に
Omniからdescriptionとexposureをdbtにプッシュする機能を試してみました。
私は「ビジネスメタデータの管理はdbtのdescriptionを軸にして行うべき派」なのですが、dbtのDescriptionを変更するためにはdbtの環境構築が必要でハードルの高さがネックに感じていました。
しかしこのOmniの機能を使うことで、OmniというBIツールからdbtのdescriptionを変更できるため、ビジネスメタデータを管理する人にはdbtの環境構築が不要でOmniのユーザーアカウントだけ払い出せばよくなります!
個人的に激アツ機能ですので、Omniとdbtを併用する際はぜひご活用ください。







