
Omniでスプレッドシートのように計算式を入力したセルの内容についてSemantic Layerのコード化してみた
さがらです。
Omniでは下図のように、スプレッドシートのような操作で選択したディメンション・メジャーの組み合わせに対して独自の計算式を入れることが出来ます。

Omniでは、このスプレッドシートのような操作を行った場合でも、OmniのSemantic Layerとしてコード化することができます。 この内容について本記事でまとめてみます。 ※一部コード化できないものもあるため、その内容についても記載します。
スプレッドシートのような操作で追加した独自の計算式をSemantic Layerとしてコード化
改めて、下図のようにスプレッドシートのような操作で選択したディメンション・メジャーの組み合わせに対して独自の計算式を追加した状態からスタートします。計算式を入れた列名も、適切な名前を入れておきます。

この状態で、計算式を入れた列の横の「・・・」を押し、Promote to workbookを押します。

そうすると、画面の左側に作成した計算式の列名で、新しいメジャーが作成されていることがわかります!Go to definitionを押すと、計算式に入れた内容がSQLに変換されて、1つのメジャーとして定義されていることがわかります。


別の例として、SUM関数のような集計関数であっても、引数で同じ行の値を渡していった場合はコード化して新しいメジャーを作ることが可能です!


Semantic Layerのコード化はできるが注意が必要なパターン
列名を日本語にした場合
計算式を入れた列名を日本語にしていてもコード化はできるのですが、メジャーの名称が正しく入力されないためご注意ください。


Semantic Layerのコード化が出来ないパターン
こちらの機能では、以下のようなパターンでSemantic Layerのコード化が出来ないため、ご注意ください。(2025/10時点の情報です。今後のアップデートにも期待したいところ…!)
同じ列の別のセルの比較を行うロジックが含まれている場合
下図のように同じ列で別のセルの値を比較を行うロジックが含まれている場合、Semantic Layerのコード化ができません。

違う列の違う行のセルの比較を行うロジックが含まれている場合
下図のように違う列の違う行のセルの比較を行うロジックが含まれている場合、Semantic Layerのコード化ができません。

最後に
Omniでスプレッドシートのように計算式を入力したセルの内容についてSemantic Layerのコード化することを試してみました。
複雑な計算ロジックだとコード化が難しいですが、同じ行のデータを用いたシンプルな演算であればそのままコード化することが出来ます。便利な機能だと思いますので、ご活用ください!








