superset druid 使用杂记

求平均(average,mean)

  相比于sql数据库的数据源,superset的druid数据源中自动生成的aggregate函数只有summinmax,没有求平均的mean或者avg,需要手动进行添加。
  druid中在在定义好的Aggregation后继续计算要用到 Druid Post Aggregation操作。即对应在superset中添加相应的List Druid Metric,主要步骤为:

  1. 填写Type为postagg
  2. 然后在对应的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}
    ]
  }

Druid时区设置(timezone)

  • 若druid摄入数据时候使用的是utc时间戳,那在实际查询数据时就会是utc时间,一般差8小时
  • 编辑DataSource配置 -- Detail -- Time Offset -- 填写为8;编辑后会将Druid查询出来的时间戳加上8小时

你可能感兴趣的:(superset druid 使用杂记)