一、聚合计算例子
有以下数据:
// 计算1
SUM(IF [shuxue]=123 then [yingyu] END)// 计算2
IF [shuxue]=123 then {fixed [shuxue]: SUM([yingyu])} END// 计算3
IF [shuxue]=123 then {SUM([yingyu])} END// 计算4
{fixed [shuxue]: SUM([yingyu])}// 计算5
{include [shuxue]: SUM([yingyu])}
得到结果如下:
与spotfire 工具 中函数的区别:
含义:统计各井WellName 的钻井时长Duration// spotfire 中写法
Sum([Duration]) over ([WellName])// tableau 中写法
{fixed [WellName]:SUM([Duration])}
二、聚合计算
适用于聚合计算的规则如下:
-
任何聚合计算中不得同时包括聚合值和解聚值。例如,SUM(Price)*[Items] 不是有效的表达式,因为 SUM(Price) 已聚合,而 Items 则没有。不过,SUM(Price*Items) 和 SUM(Price)*SUM(Items) 均有效。
-
表达式中的常量可根据情况充当聚合值或解聚值。例如:SUM(Price*7) 和 SUM(Price)*7 均为有效的表达式。
-
所有函数都可用聚合值进行计算。但是,任何给定函数的参数必须或者全部聚合,或者全部解聚。例如:MAX(SUM(Sales),Profit) 不是有效的表达式,因为 Sales 已聚合,而 Profit 则没有。不过,MAX(SUM(Sales),SUM(Profit)) 为有效的表达式。
三、LOD 表达式
当您需要在同一表中以多个粒度级别计算数据时,可以编写详细级别 (LOD) 表达式来执行此操作。举例来说,如果要查找每个区域的总销售额,可以编写类似于 {FIXED [Region] : SUM([Sales])}
的计算。
-
FIXED [字段](必需):这是您要为其计算值的一个或多个字段。举例来说,如果要查找客户和区域的总销售额,请输入
FIXED [Customer ID], [Region]:
。如果未选择任何字段,这相当于执行在冒号右侧定义的聚合,并为每一行重复该值。 -
聚合([字段])(必需):选择要计算的内容以及所需的聚合级别。举例来说,如果要查找总销售额,请输入
SUM([Sales]
。
适用规则:
- 不支持
INCLUDE
和EXCLUDE
LOD 表达式。 - 仅支持在 LOD 表达式内部使用聚合计算。例如,
SUM([Sales])
将无效,但{FIXED [Region] : SUM([Sales])}
有效。 - 不支持在 LOD 表达式内嵌套表达式。例如,不支持
{ FIXED [Region] : AVG( [Sales] ) / SUM( [Profit] )}
。 - 不支持将 LOD 表达式与其他表达式结合使用。例如,
[Sales]/{ FIXED [Country / Region]:SUM([Sales])}
不受支持。