问题

创建计算时,可能会出现以下错误之一:
  • "Cannot mix aggregate and non-aggregate arguments with this function." (Option 1,2,3 or 4 can be used).(“无法在此函数中混用聚合和非聚合参数。”(可使用选项 1、2、3 或 4))
  • " All fields must be aggregate or constant when using table calculation functions or fields from multiple data sources." (Option 1 or 3 can be used).(在使用表计算函数或来自多个数据源的字段时,所有字段都必须为聚合或常量。(可使用选项 1 或 3)。)
  • Argument to sum (an aggregate function) is already an aggregation, and cannot be further aggregated. ""  (Option 2, 3 or 4 can be used). (总和(聚合函数)参数已经聚合,因此无法进一步聚合。(可使用选项 2、3 或 4)。)

解决方案

每个选项都可能生成不同的值(有关特定示例,请参考右侧窗格中附带的工作簿和其他信息部分)。

选项 1(聚合所有字段)

在聚合中封装所有字段。

示例(未使用 LOD):
[Profit] / SUM ([Sales]) -> SUM ([Profit]) / SUM ([Sales])

示例(使用 LOD):
RANK( {fixed: SUM([Sales])} ) --> RANK( SUM( {fixed: SUM([Sales])} ))

选项 2(解聚所有字段)

从所有字段中移除聚合。

示例(未使用 LOD):
[Profit] / SUM ([Sales]) ->[Profit] / [Sales]

示例(使用 LOD):
[Profit] / SUM ([Sales]) ->[Profit] / { fixed: SUM ([Sales]) }

选项 3 (解聚所有字段,然后聚合计算。)

移动聚合,以便对计算进行聚合。

例如,计算:
IF [Row ID] = 1
THEN SUM( [Sales] )
END

可能会变为:
SUM(
IF [Row ID] = 1
THEN [Sales]
END )

选项 4(使用详细级别来解聚字段)

使用详细级别 (LOD) 表达式将聚合设为非聚合。所有 LOD 表达式返回非聚合值。

[Sales]/SUM( [Sales] ) -> [Sales]/{FIXED: SUM( [Sales] )}

原因

“Cannot mix aggregate and non-aggregate arguments with this function.(无法将聚合和非聚合参数与此函数混用。)”
- 所有字段必须为相同的聚合(已聚合或已解聚)。系统会在视图中的详细信息级别计算聚合,这将为多个记录返回一个值。系统会为基础数据中的每个记录计算非聚合字段,这将为每个记录返回一个值。

“All fields must be aggregate or constant when using Table Calculations or fields from multiple data sources(使用表计算或来自多个数据源的字段时,所有字段均必须为聚合或常量)”
-  混合或使用表计算时,所有字段均必须为已聚合。

“Argument to sum (an aggregate function) is already an aggregation, and cannot be further aggregated.(总和(聚合函数)参数已经是聚合,因此无法进一步聚合)”。
- 无法再次聚合已聚合的字段。

其他信息

如何确定字段是否已聚合。

从基础数据和详细级别 (LOD) 表达式导入的字段始终为非聚合,直至它们包含在聚合(例如 SUM()、MIN()、ATTR())中为止。 若要查看所有聚合函数的完整列表,请查看相关链接部分中的“聚合函数”部分。

计算字段可以为聚合或非聚合,具体情况视聚合的使用方式而定。如果没有使用聚合,或者最外部的表达式为 LOD 表达式,则计算将返回非聚合结果。

确定某个字段是否为聚合的一个技巧是将该字段添加到视图中。如果字段显示 AGG("Field Name"),则字段始终为聚合


示例:

下面说明了每个选项如何使用显示为引用的示例数据集工作。

抽样数据集
行 ID Profit Sales
1 100 30
2 50 60
3 7 10


公式:
SUM ([Profit]) / SUM ([Sales])

结果:
(100 + 50 + 7) / (30 + 60 + 10) =  157/100  = 1.57

选项 2

[Profit] / [Sales]

结果:(假设视图中的聚合为 SUM)

100/30 + 50/60 + 7/10 = 3.333 + .833 + .7 = 4.867

选项 3

结果:
30 + 0 + 0 = 30

选项 4


请参见 详细级别计算

详细级别表达式始终返回非聚合结果,并可用于指定聚合级别。

[Sales]/{FIXED: SUM( [Sales] )}

结果:(假设聚合为 sum)

30/100 + 60/100 + 10/100 = 3+60+10 = .3 + .6 + .1 = 1



讨论本文... 反馈论坛