
Omniでの分析導線をスムーズにしよう!OmniでWorkbookでのGUI操作からTopicを作成してみた
さがらです。
OmniではTopicという機能があり、Omniのmodel内で定義できるユーザー向けデータソースのような役割を担います。LookerでいうExploreに近い概念の機能で、ユーザーがOmniを利用する際の導線をスムーズにできます。
Topicの作成方法は、「WorkbookでのGUI操作」と「IDEでのコード編集」の2通りが用意されています。「IDEでのコード編集」については、以下のとおりブログも書かれています。
一方で、簡単なフィールド定義や結合(JOIN)定義であれば「WorkbookでのGUI操作」で十分なため、「WorkbookでのGUI操作」でTopicをどのように定義できるか試してみました。本記事では、その内容をまとめます。
※注意点として、default_filters、cache policies、required_access_grantsなどのパラメータは「IDEでのコード編集」でしか定義できません。ご注意ください。
参考:Topicに関する公式情報
Topicの作成手順については、以下の公式Docが参考になると思います。
公式からはベストプラクティスも提供されています。内容を一部だけ抜粋すると、万人向けの巨大Topicは避けて部門や用途に合わせて対象を絞ること、最初から完璧を目指さずに小さなTopicをまず作成し、フィードバックを受けながら育てていくこと、base_viewを最もトランザクション性の高いテーブルにしてmany-to-oneの結合条件にすること、labelやdescriptionやsample_queriesを定義してTopicの使い方をすぐ理解できるようにすること、などが言及されています。
また、公式からは業態ごとのTopicのイメージも提供されています。
前提条件
今回の検証は、以下の設定がすでに行われている前提で進めます。
- OmniのModelはGit連携済みで、プルリクエストを必須としている
- Omniで利用するConnectionはdbt連携済み
- dbt constraintsを定義しているため、relationshipも下図のとおり定義済み

「WorkbookでのGUI操作」によるTopicの作成
それでは、「WorkbookでのGUI操作」によるTopicの作成に取り組んでいきます。
※新しいメジャーやカスタムフィールドの定義については触れません。必要に応じてExplore画面から追加してください。
Topic編集画面を立ち上げるまで
まず、Omniのトップ画面から新しいExploreを立ち上げます。


ベースとなるviewを選択します。ここで選択したviewが、基本的に結合関係でいうleftに位置します。そのため、ファクトテーブルなどトランザクション性の高いテーブルを選択することを推奨します。
今回は「サポートチケットの対応に関する分析Topic」を作ってみるため、Fact Support Ticketを選択します。

すると、下図のようにExploreの画面が立ち上がります。事前にrelationshipを定義しているため、Dim Productのフィールドも選択できるようになっています。
この画面で、Fact Support Ticketの右の「︙」を押し、ModelingからMake topicを押します。これでTopic編集画面が立ち上がります。

Details
最初の画面ではOverviewタブとDetailsが表示されています。本章ではDetailsについて説明します。
このDetailsでは、このTopicの名前やDescription、AI Contextを入力できます。

Topic groupでは、ModelとTopicの間に、Topicを集約するグループを追加できます。今回は下図のように「製品サポート」のgroup labelを作ってみます。


DescriptionやAI Contextは、右上のアイコンをクリックすることでAIが生成してくれます。

最終的には下図のようにDetailsを設定してみました。
※以降、Detailsは非表示にして各タブについて説明していきます。

Overviewタブ
Overviewタブでは、このTopicを開いたときの初期画面がどのように見えるかを確認できます。

Joinsタブ
Joinsタブでは、別のviewの結合(JOIN)定義を追加できます。+ Newを押すと、relationshipを定義していないviewも結合(JOIN)可能です。

Fieldsタブ
Fieldsタブでは、Topicの表示に含めるフィールドを選択できます。除外するフィールドの例としては、キー項目や、別の指標の計算に用いているだけのフィールドなどが該当すると思います。

Curateタブ
Curateタブでは、結合(JOIN)定義を行った各viewごとに、フィールド一覧での表記となるLabel・Group label、フィールドごとのDescription、AI用途に役立つAI ContextやSynonymsなどを定義可能です。

各view画面の右上のExpandを押すと、入力する表を拡大できます。

今回は、下図のように各フィールドのLabelだけ追加してみました。


YAMLタブ
YAMLタブを押すと、ここまでの編集内容がどのようにYAMLで定義されるのかを確認できます。
この画面では直接コードを編集できないため、ご注意ください。

Topicの保存
一通り編集を終えたら、右上のSave changesを押します。

この状態で左側のModel Changesを押すと、各viewのLabel追加などの変更も含めて、変更点がすべて表示されます。(この内容は現時点ではWorkbookレベルで保存されているため、後で共通利用できるようにShared modelへ反映していきます。)

また、この時点でWorkbookとして一度保存しておくことを推奨します。左上のFileからSaveを押すことで保存可能です。


作成したTopicを試しに使ってsample queryを追加する
続けて、作成したTopicを試しに使い、sample queryも追加してみます。
先ほどのTopic編集画面で、右上のUse in queryを押すことで、作成したTopicを用いたQuery画面を起動できます。

この上で、下図のように、実際によく使いそうな集計パターンでフィールドの選択やフィルターの設定を行います。Omniでは、この「よく行いそうな集計パターン」をsample queryとしてTopicに追加できます。

上部のModelから、Save as sample query to topicを押します。

表示された画面で、下図のようにsample queryを定義します。入力欄の右上にAIのアイコンがある場合は、AIに生成を依頼できます。(実際、下図の内容はすべてAIに作ってもらったものです。)
入力が完了したら、右下のSave topic sample queryを押します。

この後、Edit topicからTopicの編集画面を見ると、定義したsample queryがYAMLで追加されていました。


このTopicを用いたQueryの初期画面を改めて起動すると、定義したsample queryが追加されており、これを選択すると自動でフィールドやフィルター設定が行われます。


作成したTopicをShared modelに反映
これまでの手順で作成したTopicは、このWorkbook内でしか利用できない状態のため、他のユーザーからも利用できるようにShared modelへ反映していきます。
Topicを作ったWorkbookで、新しいブランチを作成します。


左のModel Changesを押し、Add to branchを押します。


右上のCreate pull requestを押して、連携しているGitHubのリポジトリからプルリクエストを発行し、mainブランチへマージします。(GitHub上の画面は一部割愛します。)


Shared modelに反映した内容を確認
改めてOmniのトップページからModelを選択してExploreを立ち上げると、作成したTopicや、日本語でLabel付けを行った各フィールドの定義が更新されていることがわかります。



最後に
Omniで、WorkbookでのGUI操作からsample queryを含むTopicの作成、Shared modelへの反映まで、一通りの流れを試してみました。
コードを直接編集することなくGUI操作でTopicを作成できるため、Omniでグラフ作成を行う全ユーザーが実施でき、属人化の防止につながります。ぜひご活用ください。








