空集合保留标志
您可以在某些外集合表达式的开头使用 & 符号(空集合保留标志),以覆盖用户分析过程中的隐式选择集合清除。空集合保留标志允许您在用户进行选择时改变聚合的计算和表示方式,而无需重写冗长的高级集合表达式。
例如,在下面的集合表达式中,使用了空集合保留标志:
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales )
背景
使用条件
空集合保留标志可用于具有以下任一成分的集合表达式中:
-
至少一个内集合表达式和一个外集合表达式
-
两个或多个外集合表达式
当您想避免 隐式选择集合清除 时,请使用空集合保留标记。
隐式选择集合清除
隐式选择集合清除是一种内部行为,当使用复杂的集合表达式链时,有时可能不适合最终用户分析。对于按照 使用条件 结构的集合表达式,可能会出现隐式选择集合清除。
不良行为如下:
-
链中的一个或多个外集合表达式 - 具体而言,第一个(或唯一的)和除最后一个外的任何后续外集合表达式- - 定义数据集。例如: Country*={'Sweden', 'Denmark'}>}
-
在这些外集合表达式的一个或多个组成部分中,会出现产生空集合的情况。最常见情况是,应用程序中的选择发生了冲突。
-
对于空集合,这些表达式所定义的集合会在表达式求值时被清除。这意味着聚合中使用的数据不再缩减为定义的数据集,而是使用全部数据。
另一方面,在任何产生非空集合的外集合表达式中定义的集合,以及链中的最后一个外集合表达式,在求值过程中都会受到遵循。
这种行为可能导致汇总值出乎意料,并可能导致分析结果不一致。要绕过隐式选择集合清除,可以使用空集合保留标志。请参阅解决方案使用空集合保留标志。
解决方案使用空集合保留标志
使用 & 符号(空集合保留标志)覆盖隐式选择集合清除。该标记可确保链中第一个外集合表达式中定义的集合不会被清除,而是在整个表达式的求值过程中均会得到遵守。
空集合保护标志提供
-
灵活省时,当您有一些高级的、长篇的固定表达方式时,你希望保持原样,而不是重写。
-
可以更改聚合逻辑,以适应高级用例。
语法
在外集合表达式中,空集合保留标志作为一个 & 字符放在表达式的开头,即集合修饰符、标识符和运算符之前。
示例:
表达式 | 不带空集合保留标志的表达式 |
---|---|
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales ) | {<Country={'Sweden'}>} {<ProductCategory={'shirts'}>} Sum (Sales) |
{& <Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales) | {<Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales) |
详细信息和示例
有关更多详细信息,请参阅多个外部集合和内部集合表达式链。