内部と外部の set 数式
set 数式は中括弧で囲まれた集計関数内外で使用できます。
集計関数内で set 数式を使用すると、次のようになります。
内部の set 数式
Sum( {$<Year={2021}>} Sales )
複数の集計を行う式があり、すべての集計関数で同じ set 数式を書くことを回避する場合、集計関数の外で set 数式を使用します。
外部の set 数式を使用する場合、スコープの始めに配置する必要があります。
外部の set 数式
{<Year={2021}>} Sum(Sales) / Count(distinct Customer)
集計関数の外で set 数式を使用する場合、既存のマスター メジャーに適用することもできます。
マスター メジャーに適用された外部の set 数式
{<Year={2021}>} [Master Measure]
集計関数の外で使用される set 数式は、括弧で囲まれていない限り、式全体に影響を及ぼします。以下の語彙範囲の例では、set 数式が括弧内の集計にのみ適用されます。
語彙範囲
( {<Year={2021}>} Sum(Amount) / Count(distinct Customer) ) – Avg(CustomerSales)
ルール
語彙範囲
set 数式は、括弧で囲まれていない限り、数式全体に影響します。その場合、括弧が語彙範囲を定義します。
位置
set 数式は、語彙範囲の最初に配置する必要があります。
コンテキスト
コンテキストは、数式に関連性のある選択です。従来、コンテキストは常に現在の選択状態を既定としています。しかしオブジェクトが代替ステートに設定されている場合、コンテキストは現在の選択状態の代替ステートとなります。
外部の set 数式の形式でコンテキストを定義することもできます。
継承
内部の set 数式は、外部の set 数式よりも優先されます。内部の set 数式に set 識別子がある場合、コンテキストが置換されます。そうでない場合、コンテキストと set 数式がマージされます。
-
{$<SetExpression>} - 外部の set 数式を上書きする
-
{<SetExpression>} - 外部の set 数式とマージされる
要素セットの割り当て
要素セットの割り当ては、2 つの選択肢がどのようにマージされるかを決定します。通常の等号が使用される場合、内部の set 数式の選択が優先されます。そうでない場合、暗黙の set 演算子が使用されます。
-
{<Field={value}>} - この内部選択肢は “Field” の任意の外部選択肢を置換します。
-
{<Field+={value}>} - この内部選択肢は、union 演算子を使用して “Field” の外部選択肢とマージされます。
-
{<Field*={value}>} - この内部選択肢は、intersection 演算子を使用して “Field” の外部選択肢とマージされます。
複数のステップの継承
継承は複数のステップで発生する可能性があります。例:
-
現在の選択 → Sum(Amount)
集計関数はコンテキストを使用します。ここでは現在の選択です。
-
現在の選択 → {<Set1>} Sum(Amount)
Set1 は現在の選択から継承され、結果は集計関数のコンテキストとなります。
-
現在の選択 → {<Set1>} ({<Set2>} Sum(Amount))
Set2 は Set1 から継承され、結果は集計関数のコンテキストとなります。
Aggr() 関数
Aggr() 関数は、2 つの独立した集計を持つネストされた集計を作成します。下の例では、Count() が Dim の各値に対して計算され、算出された配列は Sum() 関数を使用して集計されます。
Sum(Aggr(Count(X),Dim))
Count() は内部集計であり、Sum() は外部集計です。
-
内部集計は、外部集計からどのコンテキストも継承しません。
-
内部集計は Aggr() 関数からコンテキストを継承しますが、これには set 数式が含まれている可能性があります。
-
Aggr() 関数と外部集計関数の両方とも、外部の set 数式からコンテキストを継承します。