
一度キャッシュした結果に対してフィルタリングや並べ替えを行えることでDWHへの負荷を徹底して削減!Omniのキャッシュ機能を試してみた
さがらです。
OmniはBIツールのためキャッシュ機能を備えているのですが、完全一致するクエリが再度リクエストされた場合だけキャッシュを活用するのではなく、キャッシュに対して絞り込みや並べ替えなど行うことでリクエストされたデータが返せそうであれば、DWHにクエリを発行せずOmni内のキャッシュ活用だけで済む機能が備わっています。
この再利用できるOmniのキャッシュ機能を試してみたので、その内容について本記事でまとめてみます。
一度キャッシュした結果を再利用できるパターン一覧
以下、一度キャッシュした結果を再利用できるパターンを一通り試してみたので、その内容についてまとめてみます。
再利用パターンその1:メジャー列だけが減る場合
まず、下図のようにディメンション1つ、メジャー2つを選択していたとします。

この状態でメジャーを1つ除外すると、下図のようにキャッシュを活かしたクエリが発行されます。


再利用パターンその2:フィールドの並べ替えを行っただけの場合
まず下図のように、年月、年、という順番で結果を出していたとします。

この後下図のように、年、年月という順番に並べ替えると、下図のようにキャッシュを活かしたクエリが発行されます。


再利用パターンその3:レコードの並べ替えを行っただけの場合
まず下図のように、昇順で年月別のコストを出していたとします。

この状態から、年月を降順に並べ替えてみると、下図のようにキャッシュを活かしたクエリが発行されます。


再利用パターンその4:フィルタリングを行っただけの場合
まず、下図のように年月別のコストを出していたとします。

この状態から、特定の年月だけに絞り込みを行うと、下図のようにキャッシュを活かしたクエリが発行されます。


再利用パターンその5:集計フィールドをより粒度が荒いフィールドに切り替えた場合
まず、下図のように日別に売上とコストを出していたとします。

この後、日別ではなく月別に切り替えた場合、下図のようにキャッシュを活かしたクエリが発行されます。


再利用パターンその6:ピボットを行っただけの場合
まず、下図のように年と年月で集計結果を出していたとします。

この状態から、年月列でピボットを行います。すると、下図のようにキャッシュを活かしたクエリが発行されます。


Omniのキャッシュポリシーについて
Omniのキャッシュですが、デフォルトで「6時間」キャッシュされ、データセットに対する適切な権限を持つユーザー間で共有される仕様となっています。(以下のリンク先の公式Docより)
もし、キャッシュを完全に無効化したい場合は、下記のようにモデルファイルで定義することでこのmodelに対して発行されるすべてのクエリがキャッシュを保持しなくなります。(topicsごとにキャッシュポリシーを変更することも可能です。詳しくはこちらのtopicsのパラメータの公式Docをご覧ください。)
default_cache_policy: daily_cache_policy
cache_policies:
daily_cache_policy:
max_cache_age: 0 hours
filter_suggestions_must_obey_policy: false
実際にこのキャッシュポリシーを適用してみると、先程試したクエリでもキャッシュが効かなくなります。


その他のキャッシュポリシーの設定については、以下の公式Docをご覧ください。
参考:Omniのキャッシュ機能にはDuckDBを採用
以下の公式ブログで言及があっただけですが、Omniのキャッシュ機能にはDuckDBを採用しています。
By integrating DuckDB into Omni’s platform, we can use the underlying semantic data model to power a requery-able cache. For queries that only require data from the previously cached dataset, e.g. filtering down a result set, re-aggregating metrics at a higher level, or even simply resort, can leverage DuckDB’s incredible performance without sacrificing accuracy of data. Omni’s platform allows for the performance and ease of workbook analytics with the scale and power of modern cloud native data warehouses.
最後に
Omniのキャッシュ機能を試してみました。
正直、ここまで凄いキャッシュ機能は今まで見たことがなかったので衝撃を受けました…。BIツールは試行錯誤してダッシュボードを構築していくのが当たり前ですので、その際にキャッシュが再利用されやすいことはDWH側の管理者にとってもありがたいと思います!







