Size: a a a

ClickHouse не тормозит

2020 June 24

p

pv in ClickHouse не тормозит
Доброго времени суток всем.

Подскажите пожалуйста, нормально ли такое поведение для функции timeSeriesGroupSum?
Есть такие данные (это по сути пример из документации)
┌─uid─┬───────────timestamp─┬─value─┐
│   1 │ 2020-06-21 00:01:00 │     0 │
│   1 │ 2020-06-21 00:02:00 │     0 │
│   2 │ 2020-06-21 00:05:00 │     0 │
│   2 │ 2020-06-21 00:00:00 │     0 │
└─────┴─────────────────────┴───────┘

Делаю
SELECT timeSeriesGroupSum(uid, timestamp, value) AS ts
FROM
(
   SELECT
       uid,
       toInt64(toUnixTimestamp(timestamp)) AS timestamp,
       value
   FROM time_series
   ORDER BY timestamp ASC
)

┌─ts─┐
│ [] │
└────┘

Получаю пустой массив.  Хотя ожидаю, что будет массив с тюплами [(ts1,0),(ts2,0),...]
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
Доброго времени суток всем.

Подскажите пожалуйста, нормально ли такое поведение для функции timeSeriesGroupSum?
Есть такие данные (это по сути пример из документации)
┌─uid─┬───────────timestamp─┬─value─┐
│   1 │ 2020-06-21 00:01:00 │     0 │
│   1 │ 2020-06-21 00:02:00 │     0 │
│   2 │ 2020-06-21 00:05:00 │     0 │
│   2 │ 2020-06-21 00:00:00 │     0 │
└─────┴─────────────────────┴───────┘

Делаю
SELECT timeSeriesGroupSum(uid, timestamp, value) AS ts
FROM
(
   SELECT
       uid,
       toInt64(toUnixTimestamp(timestamp)) AS timestamp,
       value
   FROM time_series
   ORDER BY timestamp ASC
)

┌─ts─┐
│ [] │
└────┘

Получаю пустой массив.  Хотя ожидаю, что будет массив с тюплами [(ts1,0),(ts2,0),...]
могу ошибаться. но скорее всего он просто игнорирует те засечки где значение равно 0
источник

p

pv in ClickHouse не тормозит
Dmitry Titov
могу ошибаться. но скорее всего он просто игнорирует те засечки где значение равно 0
Помоему несколько неожиданное поведение. На самом деле, проблема возникла в запросе где делается несколько таких timeSeriesGroupSum  с гарантировано одинаковыми метками времени, но по разным полям. Но не получается потом развернуть этот массив обратно через ARRAY JOIN  ts1, ts2  т.к. они получаются в итоге разных размеров и CH ругается.
источник

Y

Yan in ClickHouse не тормозит
pv
Доброго времени суток всем.

Подскажите пожалуйста, нормально ли такое поведение для функции timeSeriesGroupSum?
Есть такие данные (это по сути пример из документации)
┌─uid─┬───────────timestamp─┬─value─┐
│   1 │ 2020-06-21 00:01:00 │     0 │
│   1 │ 2020-06-21 00:02:00 │     0 │
│   2 │ 2020-06-21 00:05:00 │     0 │
│   2 │ 2020-06-21 00:00:00 │     0 │
└─────┴─────────────────────┴───────┘

Делаю
SELECT timeSeriesGroupSum(uid, timestamp, value) AS ts
FROM
(
   SELECT
       uid,
       toInt64(toUnixTimestamp(timestamp)) AS timestamp,
       value
   FROM time_series
   ORDER BY timestamp ASC
)

┌─ts─┐
│ [] │
└────┘

Получаю пустой массив.  Хотя ожидаю, что будет массив с тюплами [(ts1,0),(ts2,0),...]
не разбираюсь вообще, но в доке timeSeriesGroupSum агрегирует временные ряды в которых не совпадают моменты.
источник

p

pv in ClickHouse не тормозит
Yan
не разбираюсь вообще, но в доке timeSeriesGroupSum агрегирует временные ряды в которых не совпадают моменты.
ну могут совпадать, могут не совпадать. Тут проблема, что игнорируется значение 0.
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
ну могут совпадать, могут не совпадать. Тут проблема, что игнорируется значение 0.
а если дописать Array?
источник

p

pv in ClickHouse не тормозит
Dmitry Titov
а если дописать Array?
А куда?  (я на самом деле не настоящий сварщик)
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
А куда?  (я на самом деле не настоящий сварщик)
у вас два value ? value1, value2?
источник

p

pv in ClickHouse не тормозит
Dmitry Titov
у вас два value ? value1, value2?
Не совсем.. у меня Nested поля. Примерно так:
   ts DateTime,
  uid int64,
  Nested {
      val1,
      val2
  }

А мне надо всех привести к одной временной шкале  toStartOfMinute(ts)
источник

p

pv in ClickHouse не тормозит
При этом timeSeriesGroupSum умеет только с Float64 работать  в качестве значения.
Идея была развернуть nested (array join)... по всем полям сделать timeSeriesGroupSum, развернуть обратно по времени.. ну и обработать там ещё как надо.
источник

Y

Yan in ClickHouse не тормозит
у clickhouse есть какой-нибудь query inspector?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Yan
у clickhouse есть какой-нибудь query inspector?
set send_logs_level='trace'
источник

Y

Yan in ClickHouse не тормозит
Dmitry Titov
set send_logs_level='trace'
👍
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
При этом timeSeriesGroupSum умеет только с Float64 работать  в качестве значения.
Идея была развернуть nested (array join)... по всем полям сделать timeSeriesGroupSum, развернуть обратно по времени.. ну и обработать там ещё как надо.
мх
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
Не совсем.. у меня Nested поля. Примерно так:
   ts DateTime,
  uid int64,
  Nested {
      val1,
      val2
  }

А мне надо всех привести к одной временной шкале  toStartOfMinute(ts)
А сколько таких полей в nested?
источник

p

pv in ClickHouse не тормозит
Dmitry Titov
А сколько таких полей в nested?
с которыми надо провернуть такую штуку всего два.
источник

DT

Dmitry Titov in ClickHouse не тормозит
pv
с которыми надо провернуть такую штуку всего два.
ну, проблема возникает в том, что у тебя не совпадает длина массивов, а насколько большие промежутки ожидаются?
источник

p

pv in ClickHouse не тормозит
Ну это в каком-то смысле не предсказуемо. Значения  то там есть, просто нули. Если бы timeSeries их не выкидывал, то было бы всё хорошо )  Но видимо в этом поведении есть какая-то логика (он ведь аппроксимирует между точками, когда формирует недостающие), но вот с нулями как-то не так.
источник

p

pv in ClickHouse не тормозит
Но я уже склоняюсь к тому, что наверное мне в коде приложения это будет проще обработать
источник

DT

Dmitry Titov in ClickHouse не тормозит
Ну в принципе можно через arrayMap сделать, кмк но возможно оно того не стоит
источник