Size: a a a

ClickHouse не тормозит

2020 September 07

D

Dj in ClickHouse не тормозит
Artem
Как это в доке называется?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Это работает для старых данных?
вычисляется на лету, на самом деле вам нужен default а не materialized
источник

D

Dmitry in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
одновременно нельзя использовать скрипты init и systemd , если у вас systemd дистрибутив то все делайте только через systemctl (нельзя при этом использовать service ... и /etc/init.d)
спасибо! буду иметь ввиду.
источник

НМ

Николай Моисеенко... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
это таблица в которой хранятся данные materialized view. Если ее удалить то все данные MV будут потеряны.
а как при бэкапе, правильно проигнорировать эти таблицы?
я же правильно понимаю, что если мы их не сохраним - они сформируются заново, как только развернем бэкап?
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
вычисляется на лету, на самом деле вам нужен default а не materialized
Я и планировал default, и alter table update. Спасибо.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Николай Моисеенко
а как при бэкапе, правильно проигнорировать эти таблицы?
я же правильно понимаю, что если мы их не сохраним - они сформируются заново, как только развернем бэкап?
конечно нет, нельзя игнорировать.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Я и планировал default, и alter table update. Спасибо.
update необязателен
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
update необязателен
То есть старые данные обновятся сами?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
То есть старые данные обновятся сами?
они будут вычисляться на лету, в момент select-а
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
еще раз сообщаю что я баню всех задает вопросы и просит помощи в личке, а не ваш саппорт, и носки вам тоже стирать не буду.
источник

ПВ

Павел Воробьев... in ClickHouse не тормозит
Добрый день. Подскажите, пожалуйста, как можно подсчитать сумму из потока событий, если на одну последовательность(id) может прилететь value несколько раз, но взять нужно только первое по времени?

CREATE TABLE raw_events
(
   id                            String,
   date                          DateTime('UTC'),
   ts_event                      UInt64 MATERIALIZED NOW(),
   event                         UInt8,
   first_dimension_from_event_1  String,
   second_dimension_from_event_1 String,
   dimension_from_event_2        String,
   value_from_event_2            UInt64
)
   ENGINE = MergeTree() PARTITION BY toYYYYMM(date) ORDER BY (id, date) PRIMARY KEY (date, event);


CREATE MATERIALIZED VIEW events_by_month
   ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMMDD(date) ORDER BY (date) PRIMARY KEY (date)
AS
SELECT date, dim_1, dim_2, dim_3,
      -- Как правильно получить здесь сумму?
      uniqueState(id),
      sumState(value) as value
      --
FROM (
     SELECT id,
            toStartOfMonth(date)                                         as "date",
            argMinIf(first_dimension_from_event_1, ts_event, event = 1)  as dim_1,
            argMinIf(second_dimension_from_event_1, ts_event, event = 1) as dim_2,
            argMinIf(dimension_from_event_2, ts_event, event = 2)        as dim_3,
            argMinIf(value_from_event_2, ts_event, event = 1)            as value
     FROM raw_events
     GROUP BY id,
              date)
GROUP BY date;
источник

D

Dj in ClickHouse не тормозит
Павел Воробьев
Добрый день. Подскажите, пожалуйста, как можно подсчитать сумму из потока событий, если на одну последовательность(id) может прилететь value несколько раз, но взять нужно только первое по времени?

CREATE TABLE raw_events
(
   id                            String,
   date                          DateTime('UTC'),
   ts_event                      UInt64 MATERIALIZED NOW(),
   event                         UInt8,
   first_dimension_from_event_1  String,
   second_dimension_from_event_1 String,
   dimension_from_event_2        String,
   value_from_event_2            UInt64
)
   ENGINE = MergeTree() PARTITION BY toYYYYMM(date) ORDER BY (id, date) PRIMARY KEY (date, event);


CREATE MATERIALIZED VIEW events_by_month
   ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMMDD(date) ORDER BY (date) PRIMARY KEY (date)
AS
SELECT date, dim_1, dim_2, dim_3,
      -- Как правильно получить здесь сумму?
      uniqueState(id),
      sumState(value) as value
      --
FROM (
     SELECT id,
            toStartOfMonth(date)                                         as "date",
            argMinIf(first_dimension_from_event_1, ts_event, event = 1)  as dim_1,
            argMinIf(second_dimension_from_event_1, ts_event, event = 1) as dim_2,
            argMinIf(dimension_from_event_2, ts_event, event = 2)        as dim_3,
            argMinIf(value_from_event_2, ts_event, event = 1)            as value
     FROM raw_events
     GROUP BY id,
              date)
GROUP BY date;
так у вас же написано,  argMin -> sum

>>-- Как правильно получить здесь сумму?

если AggregatingMV -> sumState, потом в запросе sumMerge(value)

если просто запрос -> sum
источник

ПВ

Павел Воробьев... in ClickHouse не тормозит
Если прилетает ещё раз событие, то сумма прибавляется. Насколько я понял из документации, над новыми строками сначала производится агрегация, высчитывается сумма. И она добавляется в state
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Павел Воробьев
Добрый день. Подскажите, пожалуйста, как можно подсчитать сумму из потока событий, если на одну последовательность(id) может прилететь value несколько раз, но взять нужно только первое по времени?

CREATE TABLE raw_events
(
   id                            String,
   date                          DateTime('UTC'),
   ts_event                      UInt64 MATERIALIZED NOW(),
   event                         UInt8,
   first_dimension_from_event_1  String,
   second_dimension_from_event_1 String,
   dimension_from_event_2        String,
   value_from_event_2            UInt64
)
   ENGINE = MergeTree() PARTITION BY toYYYYMM(date) ORDER BY (id, date) PRIMARY KEY (date, event);


CREATE MATERIALIZED VIEW events_by_month
   ENGINE = AggregatingMergeTree() PARTITION BY toYYYYMMDD(date) ORDER BY (date) PRIMARY KEY (date)
AS
SELECT date, dim_1, dim_2, dim_3,
      -- Как правильно получить здесь сумму?
      uniqueState(id),
      sumState(value) as value
      --
FROM (
     SELECT id,
            toStartOfMonth(date)                                         as "date",
            argMinIf(first_dimension_from_event_1, ts_event, event = 1)  as dim_1,
            argMinIf(second_dimension_from_event_1, ts_event, event = 1) as dim_2,
            argMinIf(dimension_from_event_2, ts_event, event = 2)        as dim_3,
            argMinIf(value_from_event_2, ts_event, event = 1)            as value
     FROM raw_events
     GROUP BY id,
              date)
GROUP BY date;
MV не поможет в этой задаче
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Павел Воробьев
Если прилетает ещё раз событие, то сумма прибавляется. Насколько я понял из документации, над новыми строками сначала производится агрегация, высчитывается сумма. И она добавляется в state
да , только над каждым инсертом по отдельности
источник

ПВ

Павел Воробьев... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
MV не поможет в этой задаче
Живые запросы или дедублировать на входе?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Павел Воробьев
Живые запросы или дедублировать на входе?
если есть возможность то делать это до КХ (в ETL), если нет, то зависит от объемов, либо запросом, либо пересчитывать и перекладывать
источник

ПВ

Павел Воробьев... in ClickHouse не тормозит
Спасибо
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
есть еще новая фича, TTL where / group by , она позволяет как бы пересчитать argMin / sum, перегруппировать в момент мержа, но она тоже eventual , поэтому в запросах надо это учитывать
источник

ВК

Вячеслав Какоткин... in ClickHouse не тормозит
добрый день. а есть способ создать индекс на уже существующую таблицу?
источник