データ・セットは、きわめて疎になることがあり、空の結果セットが計算されると、パフォーマンスが著しく低下する可能性があります。空の結果セットが計算されるのを避けるために、カスタム計算式でNONEMPTYTUPLEプロパティ句を使用できます。NONEMPTYTUPLEを使用すると、システムで計算する対象が制限されます。これを設定するには、空でない場合にのみ計算されるタプルを定義します。次に、このタプルに適用される単純な数値演算を定義します。
構文
NONEMPTYTUPLEを使用する構文は次のとおりです。
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;
ここで:
tuple
: 1つ以上のメンバーに関するMDX仕様で、2つのメンバーが同じディメンションに属することはできません
NONEMPTYTUPLE
: 計算のパフォーマンスを最適化する際に使用できるオプションのプロパティ。これを使用する場合は、nonempty_member_list
を使用してこのリテラル・プロパティに従う必要があります。
nonempty_member_list
: カンマで区切った、異なるディメンションの1つ以上のメンバー名。numeric_value_expression
には、タプルが存在する必要があります。
numeric_value_expression
: 数値や算術演算など、MDXのシンプルな数値式
式は、等式の右辺である必要があります。算術演算子のみを使用してください。AND、OR、IFなど算術演算子以外を使用すると、エラーが返されます。
例:
[UnitCost] := NONEMPTYTUPLE ([TotalExpense], [NetBalance]) ([TotalExpense], [NetBalance]) / ([Units], [CostPool]);
この例は、次のようになります。
タプル([TotalExpense], [NetBalance])
を確認します。
このタプルまたは交差が空でない(つまり、実際の値が含まれている)場合、次の演算を実行します。
タプル([TotalExpense], [NetBalance])
を取得し、それをタプル([Units], [CostPool])
で除算し、UnitCost
を算出します。
タプルが空の場合はスキップし、次のインスタンスを評価します。
使用のルール
タプルは、次のように異なるディメンションのセットからのメンバーの組合せです。
([product2], [account5], customer3])
([myactivity], [yourdepartment])
Profitability and Cost Managementのカスタム計算ルールの式にNONEMPTYTUPLEを追加する要件は次のとおりで、A、B、Cはタプルを表します。
NONEMPTYTUPLEを使用できるのは、タブルに値があるときのみです。それ以外の場合、予期しない結果が生じる可能性があります。次の場合を考えてみましょう:
A=B+C
-- B
またはC
では、NONEMPTYTUPLEを使用できません。B
またはC
がない場合、結果は「なし」になり、これは正しくありません。
Note:
NONEMPTYTUPLEを使用してA=B+Cを計算するには、次の2つのルールを使用します。
ルール1: A=A+B
、B
でNONEMPTYTUPLEを使用
ルール2: A=A+C
(またはA=A-C
)、C
でNONEMPTYTUPLEを使用
この場合、B
の値があるときは常にその値がA
に加算され、C
の値があるときは常にその値がA
に加算されます。
A=B-C
-- B
またはC
では、NONEMPTYTUPLEを使用できません。B
またはC
がない場合、結果は「なし」になり、これは正しくありません(前に説明した2つのルールを使用しない場合)。
タプルの有無にかかわらず結果が同じ場合は、NONEMPTYTUPLEを使用できます。次の場合を考えてみましょう:
A=B
-- B
でNONEMPTYTUPLEを使用できます。
A=B*C
-- B
またはC
でNONEMPTYTUPLEを使用できます。
A=B/C
-- B
またはC
でNONEMPTYTUPLEを使用できます。
まとめると、乗算と除算ではNONEMPTYTUPLEを使用しても問題ないということです。加算または減算の場合、予期しない結果を避けるためには、個々のケースごとにその使用を評価する必要があります。
Note:
カスタム計算ルールの記述の詳細は、カスタム計算ルールの式の構文を参照してください。