druid-按时间戳列排序数据

zzoitvuj  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(640)

我已经建立了一个 Druid 从中摄取实时数据的群集 Kafka .
问题
Druid 支持获取按 timestamp ? 例如,假设我需要从数据源x中检索最新的10个条目。我可以用一个 LimitSpec (在 Query JSON )包括时间戳字段?或者有没有其他更好的选择 Druid ?
提前谢谢。

wlsrxk51

wlsrxk511#

获取未聚合的行
要获取未聚合的行,可以使用 "queryType: "select" .
当需要分页时,select查询也很有用—它们允许您设置页面大小,并自动返回分页标识符,以便在将来的查询中使用。
在这个例子中,如果我们只需要前10行,我们可以传入 "pagingSpec": { "pageIdentifiers": {}, "threshold": 10 } .
按时间戳排序
要按“时间戳”对这些行进行排序,可以传入 "descending": "true" . 看起来大多数druid查询类型都支持 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 }
}

“选择”类型查询上的文档

lvjbypge

lvjbypge2#

您可以使用groupby查询来完成此操作,因此groupby\u time作为一个提取函数,然后将granularity设置为all,并使用limitspec来排序/限制将起作用的内容。现在,如果您想使用timeseries查询,那么获取最新的10则更为棘手。一种方法是将粒度设置为所需的一个,比如说一小时,然后从最近的时间点开始将间隔设置为10小时。这听起来说起来容易做起来难。除非你有重大的表现问题,否则我会走第一条路。

{
  "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"
  ]
}

相关问题