求平均(average,mean)
相比于sql数据库的数据源,superset的druid数据源中自动生成的aggregate函数只有sum
、min
、max
,没有求平均的mean
或者avg
,需要手动进行添加。
druid中在在定义好的Aggregation后继续计算要用到 Druid Post Aggregation操作。即对应在superset中添加相应的List Druid Metric
,主要步骤为:
- 填写Type为
postagg
- 然后在对应的JSON框中加入相应的post-aggregation。
求平均的post-aggregation示例如下:
{
"type" : "arithmetic",
"name" : "<新的post-aggregation的命名>",
"fn" : "/",
"fields" : [
{"type":"fieldAccess", "name":"<输出名,可与fieldName一致>", "fieldName":"<普通的aggregator的name,例如sum__xxx>"},
{"type":"fieldAccess", "name":"<输出名,可与fieldName一致>", "fieldName":"<普通的aggregator的name>"}
]
}
-
arithmetic
post-aggregator用于把fields数组中元素从左到右执行fn
。fields数组中可以是普通的aggregators,也可以嵌套post aggregators; -
fields[i].name
表示aggregator 的名字,这个已经提前添加好了,上述示例使用的是superset自动添加的sum的aggregator; -
fields[i].type
表示 post-aggregator 的返回类型,fieldAccess
意为返回原始aggregation 对象。 - 对于
arithmetic
类型的 post-aggregator,fn
可以是+
、-
、*
、/
如果需要除以一个固定的常量(通常用于进制转换、速度计算等),示例如下
{
"type" : "arithmetic",
"name" : "<新的post-aggregation的命名>",
"fn" : "/",
"fields" : [
{"type":"fieldAccess", "name":"<输出名,可与fieldName一致>", "fieldName":"<普通的aggregator的name>"},
{ "type" : "constant", "name": "<常量的输出名>", "value" : 38400000000}
]
}
网友评论