问题
创建计算时,可能会出现以下错误之一:
-
"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
讨论本文...