產(chǎn)品又過來提需求了栅哀!
案例需求
需要按日匯總充值總數(shù)的數(shù)據(jù)。
過濾條件:
- 用戶包括:“Tom”和“Jack”
- 所有城市:“北京”称龙、“上毫羰埃”、“廣州”和“深圳”
- 日期范圍:“2020-03-01”到“2020-03-05”
我們用SQL語句表示一下產(chǎn)品需要什么數(shù)據(jù)鲫尊,能夠直觀的理解需求痴柔,SQL表達(dá)如下:
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常用的三種數(shù)據(jù)查詢類型:Timeseries疫向,TopN咳蔚,GroupBy。
Timeseries:按照指定日期時間段查詢規(guī)則返回聚合合的結(jié)果集搔驼,查詢規(guī)則中可以設(shè)置查詢粒度谈火、維度,過濾條件和排序方式匙奴,并且支持后聚合堆巧。返回一個JSON對象數(shù)組。
Timeseries其中主要七個部分:
image.png
根據(jù)當(dāng)前的需求,我們可以用Timerseries查詢類型來計算指標(biāo)谍肤。
查詢樣例
{
"queryType": "timeseries", // 查詢的類型
"dataSource": "user_recharge_record", // 數(shù)據(jù)源
"granularity": "day", // 指定日期聚合分區(qū)啦租,按照每天的日期維度匯總數(shù)據(jù)
"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", // 數(shù)值類型累加
"fieldName": "rechange" // 聚合時使用的指標(biāo)列名稱
}
],
"intervals": "2020-03-01\/2020-03-06" // 日期區(qū)間
}
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
}
}
]
返回結(jié)果:
?
搞定需求,可以回家啦荒揣!
參考
https://druid.apache.org/docs/latest/querying/timeseriesquery.html