我正在尝试创建这个查询(正如我所希望的那样(
SELECT userAgent,COUNT(*(FROM page_hour GROUP BY userAgent order BY 2 desc limit 10
作为json。我试过这个:
{
"queryType": "groupBy",
"dataSource": "page_hour",
"granularity": "hour",
"dimensions": ["userAgent"],
"aggregations": [
{ "type": "count", "name": "total", "fieldName": "userAgent" }
],
"intervals": [ "2020-02-25T00:00:00.000/2020-03-25T00:00:00.000" ],
"limitSpec": { "type": "default", "limit": 50, "columns": ["userAgent"] },
"orderBy": {
"dimension" : "total",
"direction" : "descending"
}
}
但是,它似乎没有在整个范围内进行聚合,而是选择了一个任意的时间跨度(EG 2020-03-19T14:00:00Z(
如果希望将整个间隔的结果组合到每个用户代理的单个结果条目中,请在查询中将granularity
设置为all
。
您可以通过在管理控制台中输入SQL语句并通过运行按钮从三点菜单中选择解释/计划菜单选项来生成本机查询。
值得确认的是,count
查询时间聚合器将返回数据库行数(而不是摄入的事件数(。这可能是结果数字小于预期的原因。
all
的granularity
将阻止按小时对结果进行分组。
count
聚合器中的fieldName
规范?我不知道可以为此定义什么行为,所以我会删除此属性。文件:
- 请参阅:https://druid.apache.org/docs/latest/querying/aggregations.html#count-聚合器