我已經設置了一個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"
]
}
修身你能寫一個例子查詢? –