
Omniで開発用のデータベースを参照することでDWHへの負荷を削減できる「Dynamic environments」機能を試してみた
さがらです。
Omniで開発用のデータベースを参照することでDWHへの負荷を削減できる「Dynamic environments」機能を試してみたので、その内容についてまとめてみます。
事前準備
OmniでConnectionとModelを作成
まず、Omniに対するConnectionとModelは作成済みであるとします。


また、こちらのConnectionではdbt連携を終えてVirtual Schemaも有効化している状態です。(このDynamic environments機能はdbt連携を行わなくても利用可能です。)

Snowflakeで開発用のデータベースを作成
次に、Omniから参照先として切り替えるための開発用のデータベースを作成します。
今回は下図のようにクローン機能を使って作成しました。

Omniで新しいConnectionを作成
開発環境のデータベースを参照する、新しいConnectionを作成します。
ポイントは、Database欄で開発用のデータベースを指定することです。

Connection作成後、Build Schemaを実行します。

下図のように新しいModelが作られたら、準備完了です。

普段使用しているConnectionでEnvironmentを設定
次に、普段使用しているConnectionからEnvironmentを設定していきます。
Connectionの画面からEnvironmentsタブを押し、+New Environmentを押します。

先程作成した開発用のデータベースを参照するEnvironmentにチェックを入れて、Saveを押します。

下図のようにEnvironments欄に追加されたら、準備完了です。
※参考までに、Use Schema from Connection Environmentは有効化すると開発用データベースでもスキーマ定義を同期しようとするため、本番用と開発用データベースでカラムの構成などが異なる場合に利用します。Allow environments to be assigned dynamicallyはUser attributeごとに参照させるデータベースを変更させたい場合に有効化します。(こちらは有効化すると使用するUser attributeの入力欄などが表示されます。)

Dynamic database機能を試してみる
ここまでの設定でDynamic database機能が使えるようになったため、早速試してみます!
保存済のWorkbookを編集するという仮定で、適当なWorkbookを開きます。


すると、左上のブランチ名の右横にデータベースアイコンが追加され、これを押すと先程追加したConnection名が表示されます。

Connection名を押して切り替えた後に、適当なクエリを発行してみます。InspectorのDialect SQLではスキーマ名までしか表示されていないため、どのデータベースを使用したかはわかりません。

そのため、SnowflakeのQuery HistoryのQuery Profileから確認してみると、開発用のデータベースを参照していることがわかりました!


最後に
Omniで開発用のデータベースを参照することでDWHへの負荷を削減できる「Dynamic environments」機能を試してみました。
ダッシュボードの開発時はデータの少ない開発環境を参照したいというケースはあると思いますので、その際にはぜひご活用ください!







