使用集合函数的集合修饰符
有时需要使用嵌套的集合定义定义一组字段值。例如,您可能希望选择购买了特定产品的所有客户,而不选择该产品。
在这种情况下,请使用元素集函数 P() 和 E()。它们分别返回字段的可能值和排除值的元素集。在括号内,可以指定相关字段和定义范围的集合表达式。例如:
P({1<Year = {2021}>} Customer)
这将返回 2021 年有交易的客户集。然后可以在集合修饰符中使用此选项。例如:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
此集合表达式将选择这些客户,但不会将选择限制在 2021 年。
这些函数不能用于其他表达式。
此外,在元素集函数中只能使用自然集合。即,可通过简单选择项定义的记录集合。
例如,通过 {1-$} 指定的集合无法始终通过选择项进行定义,因此该集合不是自然集合。在非自然集合中使用这些函数将返回意外结果。
示例:使用集合函数的集合修饰符的图表表达式
示例 | 结果 |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
返回当前选择项的销售额,但仅限购买过产品“Shoe”的客户。元素函数 P( ) 在此返回可能的客户列表;即字段 Product 中的选择项“Shoe”暗指的那些客户。 |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
同上。如果省略 Element 函数中的字段,该函数将返回外部任务中指定字段的正值。 |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
返回当前选择项的销售额,但仅限提供过产品“Shoe”的客户,即客户也是供应商。元素函数 P( ) 在此返回可能的供应商列表;即字段 Product 中的选择项“Shoe”暗指的那些供应商。供应商列表随后用作字段 Customer 中的选择项。 |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
返回当前选择项的销售额,但仅限从未购买过产品“Shoe”的那些客户。元素函数 E( ) 在此返回排除的客户列表;即根据字段 Product 中的选择项“Shoe”排除的那些客户。 |