集合分析和集合表达式

集合分析提供了一种用于定义不同于当前选择项所定义的正规集合的数据值集合(或组)的方法。

通常,在选择选择项时,聚合函数(如 SumMaxMinAvgCount)会聚合所选择的选择项:当前选择项。您的选择项会自动定义要聚合的数据集。使用集合分析,您可以定义独立于当前选择项的组。如果您要显示特定值(如产品在所有区域的市场份额),而不考虑当前选择项,则集合分析非常有用。

此外,在进行不同类型的比较时(如将销量最好的产品与销量欠佳的产品进行比较,或将今年销量与去年销量进行比较),同样集合分析也非常有用。

我们假设,如在筛选器窗格中通过选择 2010 年开始在应用程序中工作。然后,根据该选择项进行聚合,并且可视化只显示该年度的值。当您选择新选择项时,也会相应地更新可视化。可以根据通过当前选择项所定义的可能记录集合来执行聚合。使用集合分析,您可以不需要根据选择项定义您所感兴趣的集合。

创建集合表达式

在查看集合分析示例的不同部分之前,应区分集合表达式和集合分析:

定义字段值集合称为定义集合表达式,而使用集合表达式分析数据称为集合分析。因此,本节的其余部分将会侧重于集合表达式及其分量。

以下是集合分析示例:sum( {$<Year={2009}>} Sales ),其中 {$<Year={2009}>} 为集合表达式。

集合表达式的两个通用语法规则:

  • 必须在聚合函数中使用集合表达式。在此例中,聚合函数为 sum(Sales)
  • 必须用括弧 {} 将集合表达式括起来。在此例中,集合表达式为 {$<Year={2009}>}

集合表达式包含以下部分的组合:

  • 标识符。一个或多个用于定义集合表达式和要在表达式其余部分中评估的内容之间的关系的标识符。简单的集合表达式包含一个单一的标识符(如美元符号 {$}),这意味着当前选择项中的所有记录。
  • 运算符。例如,如果拥有多个标识符,可以使用一个或多个运算符优化数据集,该数据集通过组合标识符表示数据集的方式指定,以创建子集或超集。
  • 修饰符。可以将一个或多个修饰符添加到集合表达式以更改选择项。修饰符可以单独使用或用于修改标识符以过滤数据集。

Examples:  

Example 1:  

{$<Year={2009}>}

该集合表达式包含标识符 $ 和修饰符 <Year={2009>}。此示例不包括运算符。可以将上述集合表达式解释为:“属于 2009 年的当前选择项中的所有记录”。

Example 2:  

Sum({$<Year={2009}>+1<Country={'Sweden'}>} Sales)

该集合表达式包含标识符 $1、运算符 +,以及修饰符 <Year={2009}><Country={'Sweden'}>

此集合表达式设计用于计算与当前选择项相关联的 2009 年的销售额总和,并添加所有年度中与国家 Sweden 相关联的整个数据集。

备注: 集合表达式只能用于可视化的表达式,而不能用于脚本表达式。

在下面的小节中已经详细地说明了标识符、运算符和修饰符。

标识符

标识符用于定义集合表达式和要评估的字段值或表达式之间的关系。

sum( {$<Year={2009}>} Sales ) 示例中,标识符为美元符号 $,表示要评估的记录集,包含当前选择项的所有记录。然后,通过集合表达式的修饰符部分对此集合进行进一步筛选。在更复杂的集合表达式中,可以使用运算符来组合使用两个修饰符。

下表显示了一些常用的修饰符。

标识符
标识符 说明
1 表示应用程序中所有记录的完整集合,而不考虑选择的任何选择项。
$ 表示当前选择项的记录。因此,集合表达式 {$} 与不陈述集合表达式的意义等同。
$1 表示上一个选择项。$2 表示上一个选择项,但只表示一个,以此类推。
$_1 表示下一个(前进)选择项。$_2 表示下一个选择项,但只表示一个,以此类推。
BM01 您可以使用任何书签 ID 或书签名称。
MyAltState 您可以使用状态名称引用处于备用状态的这些选择项。

下表显示了一些不同的标识符示例。

带不同标识符的示例
示例 结果
sum ({1} Sales) 返回应用程序的总销售额,忽略选择项而不是维度。

sum ({$} Sales)

返回当前选择项的销售额,也就是说效果与 sum(Sales) 相同。

sum ({$1} Sales)

返回上一个选择项的销售额。

sum ({BM01} Sales)

返回书签名为 BM01 的销售额。

运算符

运算符用于包括、排除或相交部分或整个数据集。所有运算符都将集合用作操作数,并返回集协作为结果。

下表显示了可用于集合表达式的运算符。

运算符
运算符 说明
+ 并集运算符。此二元运算返回两个集合操作数中所有记录构成的集合。
- 异或运算符。此二元运算返回由属于第一个集合操作数但不属于另一个集合操作数的记录构成的集合。如用于一元运算,则结果是补集。
* 交集运算符。此二元运算返回两个集合操作数共有记录构成的集合。
/ 对称差集 (XOR) 运算符。此二元运算返回包含于两个集合操作数中但不为它们所共有的记录构成的集合。

下表显示了一些运算符示例。

运算符示例
示例 结果
sum( {1-$} Sales ) 用于返回除选择项以外的所有销售额。
sum( {$*BM01} Sales ) 用于返回选择项和书签 BM01 之间交集的销售额。
sum( {-($+BM01)} Sales )

用于返回除选择项和书签 BM01 以外的销售额

Sum({$<Year={2009}>+1<Country={'Sweden'}>} Sales) 用于返回与当前选择项相关联的 2009 年的销售额总和,并添加所有年度中与国家 Sweden 相关联的整个数据集。

修饰符

修饰符可用于添加或更改选择项。此类修改可写入集合表达式。修饰符包含一个或多个字段名称,每个修饰符后面均跟着在字段中选择的一个或多个选择项。修饰符以尖括号 <> 为开始和结束。

集合修饰符可修改先前集合标识符的选择项。如果未引用集合标识符,则默认为当前选择项状态。

下表显示了一些修饰符示例。

修饰符
示例 结果
sum({$<OrderDate = DeliveryDate>} Sales) 返回当前选择项的销售额,其中 OrderDate = DeliveryDate

sum({1<Region = {US}>} Sales)

返回美国地区的销售额,忽略当前选择项

sum({$<Region = >} Sales)

返回选择项的销售额,但移除 Region 中的选择项。

sum({<Region = >} Sales)

返回与上述示例相同的销售额。当省略要修改的集合时,则假定 $

sum({$<Year={2000}, Region={“U*”}>} Sales) 返回当前选择项的销售额,但 YearRegion 中均有新选择项。

请参阅 集合修饰符 了解有关修饰符以及如何在更复杂的集合分析中使用修饰符的更详细描述。