資料集可能會非常稀疏,且計算空結果集可能會使效能大幅降低。為避免計算空白的結果集,您可以在自訂計算公式中使用 NONEMPTYTUPLE 特性子句。使用 NONEMPTYTUPLE 限制系統試圖計算的位置。若要設定此內容,請定義只有元組不是空的時才會計算它。然後,請定義要套用到元組的簡式數值作業。
語法
使用 NONEMPTYTUPLE 的語法如下:
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;
其中:
tuple
:一或多個成員的 MDX 規格,其中的成員皆不得來自相同維度
NONEMPTYTUPLE
:可用來最佳化計算效能的選擇性特性。如果使用,必須在此文字特性後面加上 nonempty_member_list
。
nonempty_member_list
:一或多個來自不同維度的成員名稱 (以逗號分隔)。元組必須存在 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])
將 NONEMPTYTUPLE 新增至 Profitability and Cost Management 自訂計算規則的需求如下:其中的 A、B 與 C 代表元組:
只有當元組包含一些值時,才能使用 NONEMPTYTUPLE。否則,可能會發生未預期的結果。假設情況如下:
A=B+C
-- 您不能在 B
或 C
上使用 NONEMPTYTUPLE。如果缺少 B
或 C
,結果將為 None,這是不正確的值。
Note:
若要使用 NONEMPTYTUPLE 計算 A=B+C,請使用兩個規則:
規則 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
遺失,結果將會是「無」,這是不正確的 (除非您按照先前描述的使用兩個規則)。
無論是否缺少元組而結果均相同時,就可以使用 NONEMPTYTUPLE。假設情況如下:
A=B
-- 您可以在 B
上使用 NONEMPTYTUPLE。
A=B*C
-- 您可以在 B
或 C
上使用 NONEMPTYTUPLE。
A=B/C
-- 您可以在 B
或 C
上使用 NONEMPTYTUPLE。
總結而言,您可以在乘法或除法運算中放心地使用 NONEMPTYTUPLE。針對相加或相減,您必須評估它在每一個各別情況的用法,以避免非預期的結果。
Note:
如需有關寫入自訂計算規則的詳細資訊,請參閱自訂計算規則的公式語法。