groupBy не группируется по тегу, созданному с помощью eval после объединения

  • Полная информация о вашей операционной системе (или дистрибутиве), например, 64-битная Ubuntu 14.04.
    • Запуск InfluxDB/Kapacitor/Chronograf в качестве Docker-контейнеров на MacOSX, последняя версия Docker.
  • Версия Kapacitor, которую вы используете
    • Последний, 1.4.
  • Независимо от того, установили ли вы его с помощью предварительно собранного пакета или создали его из исходного кода.
    • Официальный контейнер Docker

Мы столкнулись с проблемой с TICKscript и его поведением groupBy.

У нас есть два набора измерений: indoor_temperas и outdoor_temperas, которые мы запрашиваем с помощью пакета.

Запросы выглядят следующим образом:

var out_temp = batch
    |query('SELECT mean(temperature) FROM yyyy')
        .every(10s)
        .period(120d)
        .groupBy(time(1h))
        .fill(0)

var in_temp = batch
    |query('SELECT mean(temperature) FROM xxxx')
        .every(10s)
        .period(120d)
        .groupBy(time(1h))
        .fill(0)

Если мы отправим HTTP по обоим из них, они создадут следующие наборы данных:

{
  "series": [
    {
      "name": "outdoor_temperatures",
      "columns": [
        "time",
        "mean"
      ],
      "values": [
        [
          "2017-09-20T17:00:00Z",
          0
        ],
        [
          "2017-09-20T18:00:00Z",
          11.5
        ]
        ... the rest
      ]
    }
  ]
}

{
  "series": [
    {
      "name": "indoor_measurements",
      "columns": [
        "time",
        "mean"
      ],
      "values": [
        [
          "2017-09-20T17:00:00Z",
          585.44012944984
        ],
        [
          "2017-09-20T18:00:00Z",
          592.94890510949
        ]
        ... the rest
      ]
    }
  ]
}

Теперь мы полностью объединяем их, что дает нам ожидаемые результаты.

out_temp
    |join(in_temp)
        .as('out_temp_mean', 'in_temp_mean')
        .tolerance(5m)
        .fill(0)

httpOut:

{
  "series": [
    {
      "name": "outdoor_temperatures",
      "columns": [
        "time",
        "in_temp_mean.mean",
        "out_temp_mean.mean"
      ],
      "values": [
        [
          "2017-09-20T17:00:00Z",
          586.10175438596,
          0
        ],
        [
          "2017-09-20T18:00:00Z",
          592.94890510949,
          11.5
        ]
        ... the rest
      ]
    }
  ]
}

Который выглядит идеально. Проблема возникает, когда мы хотим округлить out_temp_mean.mean вниз и группа

Итак, мы идем вперед и расширяем сценарий

out_temp
    |join(in_temp)
        .as('out_temp_mean', 'in_temp_mean')
        .tolerance(5m)
        .fill(0)
    |eval(lambda: string(floor("out_temp_mean.mean")))
        .as('bucket')
        .tags('bucket')
        .keep('out_temp_mean.mean', 'in_temp_mean.mean')

После чего вывод STILL выглядит так, как должен:

{
  "series": [
    {
      "name": "outdoor_temperatures",
      "columns": [
        "time",
        "in_temp_mean.mean",
        "out_temp_mean.mean",
        "bucket"
      ],
      "values": [
        [
          "2017-09-20T17:00:00Z",
          586.99190283401,
          0,
          "0"
        ],
        [
          "2017-09-20T18:00:00Z",
          592.94890510949,
          11.5,
          "11"
        ]
      ]
    }
  ]
}

Теперь осталось только сгруппировать значения по новой корзине тегов:

out_temp
    |join(in_temp)
        .as('out_temp_mean', 'in_temp_mean')
        .tolerance(5m)
        .fill(0)
    |eval(lambda: string(floor("out_temp_mean.mean")))
        .as('bucket')
        .tags('bucket')
        .keep('out_temp_mean.mean', 'in_temp_mean.mean')
    |groupBy('bucket')

После чего все идет не так, и нас встречают series: null

{
  "series": null
}

Это ожидаемое поведение? Жук? Или что-то другое?

Также подал это как https://github.com/influxdata/kapacitor/issues/1765 если кто-то задается вопросом.

0 ответов

Другие вопросы по тегам