跳到主要内容 跳到补充内容

集合分析

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

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

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

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

集合表达式

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

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

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

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

    示例:$1BookMark1State2

    请参阅: 集合标识符

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

    示例:+-*/

    请参阅: 集合运算符

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

    示例:<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

    具有非自然集的图表

    具有非自然集合的表。

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

了解详情

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!