【问题标题】:Druid - descending timestamps with groupBy queryDruid - 使用 groupBy 查询降序时间戳
【发布时间】:2019-01-21 10:11:07
【问题描述】:

我的要求应该非常简单,但 Druid 文档对此几乎没有信息。

我正在进行 groupBy 查询,并且数据非常大,因此我通过在每个后续查询中增加 limitSpec.limit 来“分页”它。

默认情况下,返回的数组从开始时间戳开始,并在时间上向前移动。我希望结果从结束时间戳开始,并从那里及时向后移动。

有人知道怎么做吗?

换句话说,默认情况下,groupBy 查询如下所示:

[ 
  {
    "version" : "v1",
    "timestamp" : "2012-01-01T00:00:00.000Z",
    "event" : {
      "total_usage" : <some_value_one>
    }
  }, 
  {
    "version" : "v1",
    "timestamp" : "2012-01-02T00:00:00.000Z",
    "event" : {
      "total_usage" : <some_value_two>
    }
  }
]

而我希望它看起来像这样:

[ 
  {
    "version" : "v1",
    "timestamp" : "2012-01-02T00:00:00.000Z",
    "event" : {
      "total_usage" : <some_value_two>
    }
  }, 
  {
    "version" : "v1",
    "timestamp" : "2012-01-01T00:00:00.000Z",
    "event" : {
      "total_usage" : <some_value_one>
    }
  }
]

【问题讨论】:

    标签: database large-data druid


    【解决方案1】:

    您可以通过使用限制规范中的“列”属性来实现排序。请参阅下面的示例。

    {
        "type"    : "default",
        "limit"   : <integer_value>,
        "columns" : [list of OrderByColumnSpec],
    }
    

    有关更多详细信息,您可以参考以下德鲁伊文档 - http://druid.io/docs/latest/querying/limitspec.html

    【讨论】:

    • 这适用于维度,但我说的是时间戳。所以在 GroupBy 中,每个对象都有一个“事件”和“时间戳”属性。 Druid 按时间戳对结果进行升序排序,而不管列顺序如何。我想知道如何降低时间戳属性。
    • 对于时间戳,这也应该有效。您在“列”字段中输入了什么?
    • {dimension: "some_dimension", direction: "desc"}
    • 我尝试了时间戳,但德鲁伊无法识别它。我宁愿不添加日期作为维度,因为它会爆炸基数。
    【解决方案2】:

    您可以将时间戳添加为维度但截断为日期(假设您在查询中使用day 粒度)并强制 Druid 首先按维度值对结果进行排序,然后再按时间戳排序。

    示例查询:

    {
      "dataSource": "your_datasource",
      "queryType": "groupBy",
      "dimensions": [
        {
          "type": "default",
          "dimension": "some_dimension_in",
          "outputName": "some_dimension_out",
          "outputType": "STRING"
        },
        {
          "type": "extraction",
          "dimension": "__time",
          "outputName": "__timestamp",
          "extractionFn": {
            "type": "timeFormat",
            "format" : "yyyy-MM-dd"
          }
        }
      ],
      "aggregations": [
        {
          "type": "doubleSum",
          "name": "some_metric",
          "fieldName": "some_metric_field"
        }
      ],
      "limitSpec": {
        "type": "default",
        "limit": 1000,
        "columns": [
          {
            "dimension": "__timestamp",
            "direction": "descending",
            "dimensionOrder": "numeric"
          },
          {
            "dimension": "some_metric",
            "direction": "descending",
            "dimensionOrder": "numeric"
          }
        ]
      },
      "intervals": [
        "2019-09-01/2019-10-01"
      ],
      "granularity": "day",
      "context": {
        "sortByDimsFirst": "true"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-10
      • 2022-11-11
      • 2018-04-21
      • 2021-08-22
      • 2022-01-12
      • 2015-11-18
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多