
OmniでConnection作成後どのようにダッシュボード開発を進めていくか手順をまとめてみた~セルフサービスBIによる自由とSemantic Layerによるガバナンスの両立~
さがらです。
OmniではConnection繋いだ後、「あれ、これどうやってダッシュボード作っていくんだ…?」となる方が多いと思います。(私はなりましたw)
そんな方向けに、OmniでConnectionを作成後、どのようにダッシュボード開発を進めていくか本記事でまとめてみます。
前提条件
以下の設定を終えた状態とします。
- SnowflakeへのConnectionを作成済
- Connectionの中で、dbtとの連携設定も完了
- Connectionに対してModelを1つ作成し、そのModelはGitHubとの連携も終えて、Shared Modelの変更にはプルリクエストを必須としている状態(参考:公式Doc)
また、実際の操作はConnectionを作成したユーザーとは別に、対象のModelに対して「Querier」という権限を付与したユーザーを作成しておき、この「Querier」権限を持つユーザーから操作を行います。
※「Querier」権限ですが、OmniのユーザーライセンスはTableauやLookerのようにAdmin・Creator・Viewerと3種類あるのですが、真ん中のCreatorで使用できる権限となります。このユーザーライセンスと権限についての詳細は、公式Docをご覧ください。
Omniでダッシュボード開発を行う流れ
分析用のユーザーでログイン後、左上の+ New
を押します。
すると、分析したいモデルを選択できるため、使用したいモデルを選択します。
すると、そのモデルの中から使用できるviewの一覧が表示されますので、使用したいviewを選択します。(もしviewの一覧が表示されていない場合は、右上のViews
をクリックします。)
※viewとはOmniの概念で、一つ一つのSnowflakeのテーブルやビューごとにdimensionやmeasureを定義するオブジェクトです。(Lookerのviewとほぼ同じです。)
※このタイミングで何もviewが何も表示されなかった方向け(おそらく、”dbt連携してproductionのスキーマを設定していない場合”、"そもそもdbt連携をしていない場合"、はこうなります。)
何もviewが表示されない場合は、下図のようにBrowse all views
を押し、使用するスキーマを選択してください。
すると、BIツールではよく見慣れた、左にviewで定義されたdimensionやmeasureが表示され、そこから選んでいく画面となります。
あとは、以下のような手順で、新しいmeasureを追加したり、別のviewとのJOIN定義を追加していきましょう。
- フィールドに対してフィルタ・ピボット・メジャー追加(Aggregates)などの操作を行う
- viewに対して別のviewのJOIN定義を行う
- 少し計算が複雑なcustom fieldを追加する(参考:公式Doc)
一通り別のviewやJOINの定義を終えたら、使いたいフィールドを選択してグラフを作成していきます。Chart
を押すとグラフだけ、Both
を押すと実際のデータとグラフをどちらも同時に表示できます。
グラフを作り終えたら、右上の+ Dashboard
を押します。適当に名前を入れて保存します。まだ他のグラフも追加したいので、この場ではLeave draft
を押します。
すると、ダッシュボードが保存され、対象のダッシュボードのDraft画面に移動します。
(基本的にDraftと表示されている最中は、編集中の下書き状態であることを意味します。)
ここからさらに別のグラフを追加するには、Workbook
を押します。
※私の現在の理解だと、Omniでの各ファイルの保存はWorkbookレベルで行われ、そのWorkbookごとにダッシュボードも紐づいて管理されます。
新しいタブを左下から追加し、別のグラフを作成します。この状態でDashboard
を押すと、すでに追加したグラフがダッシュボード上にも追加された状態となります。(非表示にしたい場合は、各グラフの右上の「・・・」からHide Chart
を押すことで非表示に出来ます。)
また、各グラフの名称を変更したい場合は、Workbookの画面で各タブの名称を変更すればOKです。
最後に、追加したグラフも含めて保存するため、右上のPublish
を押します。これで一通りのダッシュボード開発の流れは以上となります。
定義したmeasureやJOIN定義をShared Modelに昇格させる
先程Workbookでダッシュボードを開発しましたが、measureやJOIN定義は各Workbookに閉じたままです。これでは従来型のBIとあまり変わらないですよね。
(下図のように、もう一度対象のModelを選択して新規の分析画面を立ち上げても、先程Workbookで追加したmeasureなどが追加されていません。)
ここからがOmniの真骨頂で、Workbook内で定義したmeasureやJOIN定義をShared Modelに昇格させることで、他のユーザーにも定義したmeasureやJOIN定義を利用させることが出来ます。
※OmniのModel階層は下図のようになっており、共通利用する定義はShared Modelで管理する仕様となっています。
まず、先程保存したWorkbookを開き、左のModel Changes
を押します。
すると、このWorkbookでのみ行われた変更の一覧が表示されます。これをShared Modelに反映させていこうと思います。
今回はOmniのModelとGitHubを連携済のため、この変更を反映させるにはブランチを切る必要があります。
Model
⇛Branch
⇛New branch
と押して、適当なブランチ名を入れてCreate
を押します。
すると、Model Changes
の画面において、下図のように変更した内容のうちどれをブランチに追加するか選択する画面となります。(Shared Modelへの昇格が不要な変更がある場合はチェックマークを外すことで除外することができます。)
どの変更をShared Modelに昇格させるか選択後、Add to branch
を押します。表示されたポップアップにおいてもAdd
を押します。
この状態で、Shared Modelに反映するため、右上のCreate pull request
を押します。
あとは、マージまでの一連の操作をGitHub上で行います。ちゃんと変更点がコード化されていることもわかります。
この状態で、ホーム画面から再度Modelを選択して新しい分析画面を立ち上げて対象のviewを選択すると、Workbookで作成したフィールドやJOIN定義がちゃんと追加されていることがわかります!(確認はWorkbookを作成したユーザーとは別の、Admin相当の別ユーザーから実施)
定義されているコードの確認方法
ちなみに、Omniがどのようにコードで管理しているかは、Workbookからだと下図の流れで確認可能です。
最後に
OmniでConnectionを作成後、どのようにダッシュボード開発を進めていくかをまとめてみました。
タイトルにもある通り、「セルフサービスBIによる自由とSemantic Layerによるガバナンスの両立」した開発プロセスが出来るのがOmniの売りです!