set 関数を使用した set 修飾子
ネストされた set 定義を使用して、項目値のセットを定義する必要がある場合があります。例えば、製品を選択せずに、特定の製品を購入したすべての顧客を選択したい場合があります。
このような場合は、要素セット関数 P() および E() を使用してください。これらは、それぞれ、項目の可能な値と除外された値の要素セットを返します。角括弧内で、問題の項目と、スコープを定義する set 数式を指定できます。例:
P({1<Year = {2021}>} Customer)
これにより、2021 年にトランザクションが発生した一連の顧客が返されます。その後、これを set 修飾子で使用できます。例:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
この set 数式はこれらの顧客を選択しますが、選択を 2021 年に制限するものではありません。
これらの関数は、他の数式では使用できません。
さらに、要素セット関数内で使用できるのは natural set のみです。つまり、単一の選択によって定義されたレコードのセットです。
例えば、{1-$} によるセットは選択を通して定義されたものとは限らず、そのため natural set ではありません。これらの関数を non-natural set で使用すると、予期しない結果が返されます。
例: set 関数を使用した set 修飾子のチャートの数式
例 | 結果 |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
現在の選択に対する売上が返されますが、製品「Shoe」を購入したことのある顧客のみが対象となります。要素関数 P( ) はここで、絞込まれた顧客 (「Shoe」を項目 Product で選択することで黙示的に定義) のリストを返します。 |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
上記と同様です。要素関数内の項目が省略されると、外部代入で指定された項目に可能な値が返されます。 |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
現在の選択条件に対する売上高が返されますが、製品「Shoe」を供給したことのある顧客、つまり、サプライヤでもある顧客のみが対象となります。要素関数 P( ) はここで、絞込まれたサプライヤ (「Shoe」を項目 Product で選択することで黙示的に定義) のリストを返します。次に、サプライヤのリストは項目 Customer の選択に使用されます。 |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
現在の選択に対する sales が返されますが、製品「Shoe」を購入したことのない顧客のみが対象となります。ここで関数 E( ) は、「Shoe」を Product 項目で選択することによって除外された Customer のリストを返します。 |