美文网首页
Druid 分析报表中的实战(一)

Druid 分析报表中的实战(一)

作者: 桂成林 | 来源:发表于2020-04-07 22:05 被阅读0次

产品又过来提需求了!

案例需求

需要按日汇总充值总数的数据。

过滤条件:

  1. 用户包括:“Tom”和“Jack”
  2. 所有城市:“北京”、“上海”、“广州”和“深圳”
  3. 日期范围:“2020-03-01”到“2020-03-05”

我们用SQL语句表示一下产品需要什么数据,能够直观的理解需求,SQL表达如下:

SELECT 
    date,SUM(rechange) AS rechange 
FROM 
    user_recharge_record 
WHERE 
    date>='2020-03-01' AND date<='2020-03-05' AND 
    user_name IN ('Tom', 'Jack') AND 
    city IN ('北京','上海','广州','深圳') 
GROUP By create_date;

druid常用的三种数据查询类型:Timeseries,TopN,GroupBy。

Timeseries:按照指定日期时间段查询规则返回聚合合的结果集,查询规则中可以设置查询粒度、维度,过滤条件和排序方式,并且支持后聚合。返回一个JSON对象数组。

Timeseries其中主要七个部分:


image.png

根据当前的需求,我们可以用Timerseries查询类型来计算指标。

查询样例

{
    "queryType": "timeseries",            // 查询的类型
    "dataSource": "user_recharge_record", // 数据源
    "granularity": "day",                 // 指定日期聚合分区,按照每天的日期维度汇总数据
    "filter": { // 过滤条件
        "type": "and",
        "fields": 
        [
            {
                "dimension": "user_name",
                "type": "in",
                "values": ["Tom", "Jack"]
            },
            {
                "dimension": "city",
                "type": "in",
                "values": ["北京", "上海", "广州", "深圳"]
            }
        ]

    },
    "context": {
        "timeout": 28000 // 超时时间
    },
    "aggregations": [               // 聚合器 
    {
        "name": "rechange",     // 聚合后输出的名字
        "type": "doubleSum",    // 数值类型累加
        "fieldName": "rechange" // 聚合时使用的指标列名称
    }
],
"intervals": "2020-03-01\/2020-03-06" // 日期区间
}

Results:

[
  {
    "timestamp": "2020-03-01T00:00:00.000+08:00",
    "result": {
      "rechange": 21195.0
    }
  },
  {
    "timestamp": "2020-03-02T00:00:00.000+08:00",
    "result": {
      "rechange": 29785.0
    }
  },
  {
    "timestamp": "2020-03-03T00:00:00.000+08:00",
    "result": {
      "rechange": 31123.0
    }
  },
  {
    "timestamp": "2020-03-04T00:00:00.000+08:00",
    "result": {
      "rechange": 33818.0
    }
  },
  {
    "timestamp": "2020-03-05T00:00:00.000+08:00",
    "result": {
      "rechange": 33658.0
    }
  }
]

返回结果:

搞定需求,可以回家啦!

参考

https://druid.apache.org/docs/latest/querying/timeseriesquery.html

相关文章

网友评论

      本文标题:Druid 分析报表中的实战(一)

      本文链接:https://www.haomeiwen.com/subject/qwaophtx.html