我已经设置了一个 Druid 集群来从 Kafka 中获取实时数据 .
Druid
Kafka
Question
timestamp
LimitSpec
Query JSON
提前致谢 .
Get unaggregated rows
要获取未聚合的行,可以使用 "queryType: "select" 进行查询 .
"queryType: "select"
当需要分页时,选择查询也很有用 - 它们允许您设置页面大小,并自动返回分页标识符以供将来查询使用 .
在这个例子中,如果我们只想要前10行,我们可以传入 "pagingSpec": { "pageIdentifiers": {}, "threshold": 10 } .
"pagingSpec": { "pageIdentifiers": {}, "threshold": 10 }
Order by timestamp
要通过"timestamp"对这些行进行排序,您可以传入 "descending": "true" . 看起来大多数德鲁伊查询类型都支持 descending 属性 .
"descending": "true"
descending
Example Query:
{ "queryType": "select", "dataSource": "my_data_source", "granularity": "all", "intervals": [ "2017-01-01T00:00:00.000Z/2017-12-30T00:00:00.000Z" ], "descending": "true", "pagingSpec": { "pageIdentifiers": {}, "threshold": 10 } }
Docs on "select" type queries
您可以使用按查询分组来执行此操作,因此将__time分组为extraction function然后将粒度设置为all并使用limitSpec来排序/限制将起作用 . 现在,如果你想使用时间序列查询,那么获取最新版本10会更加棘手 . 一种方法是将粒度设置为所需的粒度,然后将小时设置为小时,然后将间隔设置为10H,从最近的点开始时间 . 这听起来比说实现更容易 . 除非你遇到重大的性能问题,否则我会采用第一种方式 .
{ "queryType": "groupBy", "dataSource": "wikiticker", "granularity": "all", "dimensions": [ { "type": "extraction", "dimension": "__time", "outputName": "extract_time", "extractionFn": { "type": "timeFormat" } }, ], "limitSpec": { "type": "default", "limit": 10, "columns": [ { "dimension": "extract_time", "direction": "descending" } ] }, "aggregations": [ { "type": "count", "name": "$f2" }, { "type": "longMax", "name": "$f3", "fieldName": "added" } ], "intervals": [ "1900-01-01T00:00:00.000/3000-01-01T00:00:00.000" ] }
2 回答
Get unaggregated rows
要获取未聚合的行,可以使用
"queryType: "select"
进行查询 .当需要分页时,选择查询也很有用 - 它们允许您设置页面大小,并自动返回分页标识符以供将来查询使用 .
在这个例子中,如果我们只想要前10行,我们可以传入
"pagingSpec": { "pageIdentifiers": {}, "threshold": 10 }
.Order by timestamp
要通过"timestamp"对这些行进行排序,您可以传入
"descending": "true"
. 看起来大多数德鲁伊查询类型都支持descending
属性 .Example Query:
Docs on "select" type queries
您可以使用按查询分组来执行此操作,因此将__time分组为extraction function然后将粒度设置为all并使用limitSpec来排序/限制将起作用 . 现在,如果你想使用时间序列查询,那么获取最新版本10会更加棘手 . 一种方法是将粒度设置为所需的粒度,然后将小时设置为小时,然后将间隔设置为10H,从最近的点开始时间 . 这听起来比说实现更容易 . 除非你遇到重大的性能问题,否则我会采用第一种方式 .