跳到主要内容

集合分析

在应用程序中进行选择时,将在数据中定义记录的子集。聚合函数,诸如 Sum()Max()Min()Avg()Count() 都基于该子集计算。

换句话说,您的选择定义了聚合的范围;它定义了进行计算的记录集。

集合分析提供了一种定义范围的方法,该范围不同于当前选择所定义的记录集。该新范围也可被视为一种替代选择。

如果要将当前选择与特定值(例如去年的值或全球市场份额)进行比较,此选项非常有用。

集合表达式

集合表达式在聚合函数中使用,并用花括号括起来。例如:

Sum( {$<Year={2021}>} Sales )

集合表达式包含以下元件的组合:

  • Identifiers。集合标识符表示在别处定义的选择。它还表示数据中的一组特定记录。它可以是当前选择、书签选择或备用状态选择。简单的集合表达式包含一个单一的标识符(如美元符号 {$}),这意味着当前选择项中的所有记录。

    示例:$1BookMark1State2

    请参阅: 集合标识符

  • Operators。集合运算符可用于创建不同集合标识符之间的并集、差异或交点。通过这种方式,您可以创建由集合标识符定义的选择的子集或超集。

    示例:+-*/

    请参阅: 集合运算符

  • Modifiers。可以将集合修饰符添加到集合标识符以更改其选择。修饰符也可以单独使用,然后修改默认标识符。修饰符必须用尖括号 <…> 括起来。

    示例:<Year={2020}><Supplier={ACME}>

    请参阅: 集合修饰符

这些元素被组合成集合表达式。

集合表达式中的元素

集合表达式中的元素。

例如,以上集合表达式是从聚合 Sum(Sales) 生成的。

第一个操作数返回当前选择的年份 2021 的销售额,由 $ 集合标识符和包含年份 2021 选择的修饰符指示。第二个操作数返回 SwedenSales,并忽略由 1 集合标识符指示的当前选择。

最后,表达式返回一个集合,该集合由属于两个集合操作数中任何一个的记录组成,如 + 集合运算符所示。

有关完整的语法描述,请参见集合表达式语法

示例

以下主题中提供了组合上述集合表达式元素的示例:

要尝试其他一些表达式,请参阅教程 - 创建集合表达式

自然集

通常,集合表达式表示数据模型中的一组记录和定义此数据子集的选择。在这种情况下,该集合称为自然集合。

集合标识符(带或不带集合修饰符)始终表示自然集合。

然而,使用集合运算符的集合表达式也表示记录的子集,但通常仍然不能使用字段值的选择来描述。这样的表达式是非自然的集合。

例如,{1-$} 给定的集合不能总是由选择定义。因此,它不是一个自然的集合。这可以通过加载以下数据、将其添加到表中,然后使用筛选窗格进行选择来显示。

Load * Inline
[Dim1, Dim2, Number
A, X, 1
A, Y, 1
B, X, 1
B, Y, 1];		

通过对 Dim1Dim2 进行选择,可以获得下表所示的视图。

具有自然集合和非自然集合的表

具有自然集合和非自然集合的表。

第一个度量中的集合表达式使用自然集合:它对应于所做的选择 {$}

第二度量是不同的。它使用 {1-$}。不可能做出与此集合对应的选择,因此它是非自然集合。

这种区别有许多后果:

  • 集合修饰符只能应用于集合标识符。它们不能应用于任何集合表达式。例如,不可能使用以下集合表达式: 

    { (BM01 * BM02) <Field={x,y}> }

    在这里,正常(圆形)括号表示应在应用“设置”修饰符之前计算 BM01BM02 之间的交点。原因是没有可以修改的元素集。

  • 不能在 P()E() 元素函数中使用非自然集。这些函数返回一个元素集,但无法从非自然集推断元素集。

  • 如果数据模型有多个表,则使用非自然集的度量值不能始终归因于正确的维度值。例如,在下表中,一些排除在外的销售数字归因于正确的 Country,而另一些将 NULL 作为 Country

    具有非自然集的图表

    具有非自然集合的表。

    分配是否正确取决于数据模型。在这种情况下,如果号码属于被选择排除在外的国家,则无法分配该号码。

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

sum ({$} Sales)

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

sum ({$1} Sales)

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

sum ({BM01} Sales)

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

示例 结果
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 中均有新选择项。