我已经设置了一个Druid
集群来从Kafka
中提取实时数据。德鲁伊 - 通过时间戳列的订单数据
问题
- 是否
Druid
支持获取多数民众赞成由timestamp
排序的数据?例如,假设我需要从数据源X中检索最新的10个条目。我可以通过使用包含时间戳字段的LimitSpec
(位于Query JSON
)来执行此操作吗?还是有另一个更好的选项支持Druid
?
在此先感谢。
我已经设置了一个Druid
集群来从Kafka
中提取实时数据。德鲁伊 - 通过时间戳列的订单数据
问题
Druid
支持获取多数民众赞成由timestamp
排序的数据?例如,假设我需要从数据源X中检索最新的10个条目。我可以通过使用包含时间戳字段的LimitSpec
(位于Query JSON
)来执行此操作吗?还是有另一个更好的选项支持Druid
?在此先感谢。
获取的未聚集行
为了获得非聚集行,你可以做一个查询与"queryType: "select"
。
当需要分页时,选择查询也很有用 - 它们允许您设置页面大小,并自动返回分页标识符以供将来查询使用。
在这个例子中,如果我们只想要前10行,我们可以通过"pagingSpec": { "pageIdentifiers": {}, "threshold": 10 }
。
订购时间戳
要订购这些行由“时间戳”,你可以在"descending": "true"
通过。 看起来像大多数德鲁伊查询类型支持descending
属性。
实例查询:
{
"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 }
}
你可以通过查询使用一个组来做到这一点,所以按__time分组为extraction function,然后为所有人设置粒度,并使用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"
]
}
修身你能写一个例子查询? –