メイン コンテンツをスキップする 補完的コンテンツへスキップ

内部と外部の 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))

    Set2Set1 から継承され、結果は集計関数のコンテキストとなります。

Aggr() 関数

Aggr() 関数は、2 つの独立した集計を持つネストされた集計を作成します。下の例では、Count()Dim の各値に対して計算され、算出された配列は Sum() 関数を使用して集計されます。

 

Sum(Aggr(Count(X),Dim))

Count() は内部集計であり、Sum() は外部集計です。

  • 内部集計は、外部集計からどのコンテキストも継承しません。

  • 内部集計は Aggr() 関数からコンテキストを継承しますが、これには set 数式が含まれている可能性があります。

  • Aggr() 関数と外部集計関数の両方とも、外部の set 数式からコンテキストを継承します。

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。