空のタプルをスキップしてカスタム計算を最適化

データ・セットは、きわめて疎になることがあり、空の結果セットが計算されると、パフォーマンスが著しく低下する可能性があります。空の結果セットが計算されるのを避けるために、カスタム計算式で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]);

この例は、次のようになります。

  1. タプル([TotalExpense], [NetBalance])を確認します。

  2. このタプルまたは交差が空でない(つまり、実際の値が含まれている)場合、次の演算を実行します。

    タプル([TotalExpense], [NetBalance])を取得し、それをタプル([Units], [CostPool])で除算し、UnitCostを算出します。

  3. タプルが空の場合はスキップし、次のインスタンスを評価します。

使用のルール

タプルは、次のように異なるディメンションのセットからのメンバーの組合せです。

([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+BBで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:

カスタム計算ルールの記述の詳細は、カスタム計算ルールの式の構文を参照してください。