集約ストレージ・アウトラインに対する式の記述
式エディタを使用して、Essbase集約ストレージ(ASO)アウトラインにMDX式を記述します。式を使用すると、基本的な数式の適用、ディメンション間のメンバーの計算、条件付きテストの実行、ユーザー定義属性(UDA)に基づくフィルタを行うことができます。
集約ストレージ・アウトラインでの式
式はプレーン・テキストです。式を式エディタに直接入力することも、任意のテキスト・エディタで式を作成して、そのテキストを式エディタに貼り付けることもできます。
関数名の誤りや存在しないメンバーなど、式の構文エラーがある場合は、MDXベースのの構文チェックによって示されます。不明なメンバー名は、関数名のリストで検証できます。サービス・インスタンスまたはアウトラインに関連付けられたアプリケーションに接続していない場合は、不明な名前を検証するために、Essbaseによって接続される場合があります。
構文チェックは、式を検証または保存するときに発生します。エラーはユーザー・インタフェースに表示されます。エラーが発生した場合は、式を保存するかしないかを選択します。エラーのある式を保存すると、アウトラインを保存するときに警告されます。エラーのある式を計算すると、その式は無視され、メンバーには$MISSINGの値が指定されます。
構文チェッカでは、式のセマンティック・エラーは警告できません。セマンティック・エラーは、式が期待どおりに動作しないときに発生します。式でセマンティック・エラーを検出する方法の1つは、式を定義する数値式をMDX問合せに配置し、その式を実行して、結果が期待どおりであることを確認する方法です。
ディメンション構築データソースに式を含めることができます。ディメンション構築 のフィールド・タイプ情報の設定を参照してください。
集約ストレージ・アウトラインの基本的な等式
式に算術演算を適用して、基本的な等式を作成できます。たとえば、次の式は、ASOsamp Basicキューブの「Avg Units/Transaction」メンバーに適用されます:
[Units]/[Transactions]「Avg Units/Transaction」内の式は、ユニットの数をトランザクション数で除算し、トランザクション当たりの平均ユニット数を求めます。
集約ストレージ・アウトラインでは、メンバーを費用アイテムとしてタグ付けできません。したがって、Calcの@VARや@VARPERなどの関数で費用タグを考慮することで2つのメンバー間の差異を判断しますが、集約ストレージ・アウトラインでは関係がありません。
MDXの減算演算子は、2つのメンバー間の差異を計算するために使用できます。たとえば、ASOsamp BasicのPrice Diffという新しいメンバーに次の式を適用して、支払価格と元価格の差異を計算できます。
[Price Paid]-[Original Price]集約ストレージ・アウトラインの次元をまたいだメンバー
ASOsamp Basicには、「% of Total」という、メンバーに対する式が含まれています。このメンバー式では、「Transactions」によって生成されるメジャー合計のパーセンテージが特定されます。「% of Total」の式は次のとおりです。
Transactions/
(Transactions,Years,Months,[Transaction Type],[Payment Type],
Promotions,Age,[Income Level],Products,Stores,Geography)この式では、タプル(Transactions、 Years、 ...)で除算されたメンバー(Transactions)を指定します。この式では、キューブ内のすべてのトランザクション・データが考慮されるように、それぞれのディメンションの最上位メンバーをリストします。つまり、Curr Yearメンバーのトランザクション・データではなくYearディメンションのすべてのメンバーのトランザクション・データ、最初の2つの四半期の中での月に対するトランザクション・データではなくすべての月に対する「トランザクション」データなどです。このようにして、「合計に占込む割合%」の値は、「Transactions」によって生成されるメジャーの合計のパーセンテージを表します。
集約ストレージ・アウトラインの式の条件付きテスト
1つまたは一連の条件付きテストを使用する式を定義して、メンバーの値を特定できます。1つのelse条件を持つテストを実行するには、IIF関数を使用します。IIF関数をネストして、より複雑な問合せを作成できます。
次の例では、クレジット・カード・トランザクションに対して支払う必要がある価格(5%の手数料を含む)を表すメンバー式を指定しています。次の例では、ASOsamp BasicキューブのMeasuresディメンションにCredit Priceメンバーが追加されていることを仮定しています。「Credit Price」には次の式が含まれ、支払タイプがクレジット・カードの場合、 これにより「Price Paid」に5%加算されます。
IIF (
[Payment Type].CurrentMember=[Credit Card],
[Price Paid] * 1.05, [Price Paid]
)複数のテストおよびelse条件を含む式を作成するには、CASE、WHEN、THEN構造を使用します。
Filter関数によって、指定された検索条件の基準を満たす入力セットのタプルが戻ります。たとえば、すべての製品にベースライン(100)を確立するには、Baselineメンバーを追加し、そのメンバーの式を次のように作成します:
Count(Filter(Descendants([PersonalElectronics],
[Products].Levels(0)),[Qtr1] > 100.00))集約ストレージ・アウトラインの式でのUDA
UDAは、メンバーに対して作成する単語または語句です。たとえば、Sample.Basicでは、Marketディメンションの最上位レベルのメンバーには、「UDA Small Market」または「UDA Major Market」が含まれます。
このトピックで使用する「Major Market」の例は、すべての主要市場メンバーの売上高合計を示すメンバーに対する式の作成方法を示しています。この例では、Sample.Basicに新しいメンバー(Major Market Total)が追加されていると想定しています。
-
MDXには、IsUDAというブール関数があります。この関数では、メンバーに関連するUDAタグがある場合、TRUEが戻されます。次の構文は、Marketディメンションの現在のメンバーにUDAの「Major Market」がある場合、TRUEを戻します。
IsUda([Market].CurrentMember, "Major Market") -
Filter関数をIsUDAとともに使用する(次の構文で示すように)と、Marketディメンションの各メンバーについて、逐次、Major Market UDAを持つ各メンバーの値が戻されます。
Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")) -
Sum関数では、Filter関数によって戻された値が加算されます。「Major Market」の例では次の式が作成されています。
Sum (Filter([Market].Members, IsUda([Market].CurrentMember, "Major Market")))この式が、「Major Market Total」メンバーに添付されます。