Druid - упорядочить данные по столбцу с отметкой времени

Я установил Druid кластер для приема данных в реальном времени из Kafka.

Вопрос

  1. Druid поддерживает получение данных, отсортированных по timestamp? Например, предположим, что мне нужно получить последние 10 записей из источника данных X. Могу ли я сделать это, используя LimitSpecQuery JSON), который включает поле отметки времени? Или есть другой лучший вариант, который поддерживается Druid?

Заранее спасибо.


person jithinpt    schedule 14.04.2017    source источник


Ответы (2)


Получить неагрегированные строки

Чтобы получить неагрегированные строки, вы можете выполнить запрос с "queryType: "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 }
}

Документы по запросам типа "выбор"

person Don P    schedule 24.04.2017

Для этого можно использовать группу по запросу, поэтому сгруппируйте по __time как функция извлечения, затем установите гранулярность для всех и используйте limitSpec для сортировки / ограничения, которая будет работать. Теперь, если вы хотите использовать запрос таймсерии, сложнее получить последние 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"
  ]
}
person Slim Bouguerra    schedule 15.04.2017
comment
Слим, можешь ли ты написать пример запроса? - person Don P; 25.04.2017