
Алексей
03.09.2018
08:23:12

Wolf
03.09.2018
08:23:19

Dmitry
03.09.2018
08:23:28

Antowa
03.09.2018
08:24:20

Google

Alexander
03.09.2018
08:36:41

Sergey
03.09.2018
08:47:05
Привет. Есть ли в CH способ вынуть время прошедшее с предыдущего события? Т.е. есть таблица вида
date | devId | eventDateTime
2018-08-01 | 100 | 2018-08-01 12:00:00
2018-08-01 | 100 | 2018-08-01 12:10:00
2018-08-01 | 100 | 2018-08-01 12:15:00
Нужен запрос, который вернёт
devId | eventDateTime | fromPrev
100 | 2018-08-01 12:00:00 |
100 | 2018-08-01 12:10:00 | 600
100 | 2018-08-01 12:15:00 | 300

Vasilij
03.09.2018
08:48:49

Sergey
03.09.2018
08:54:26

Vasilij
03.09.2018
08:55:20
Можно поискать здесь в чате (есть примеры), или в исходниках на гитхабе, в тестах всегда есть примеры каждой функции.

Sergey
03.09.2018
08:58:46

Vadim
03.09.2018
08:58:55

Bogdan
03.09.2018
08:59:46
Коллеги, можно ли в кликхаусе сделать join таблиц без using? то есть просто берём две любые таблицы и надо смёржить всё со всем

Алексей
03.09.2018
09:00:31

Evgeny
03.09.2018
09:01:12

Bogdan
03.09.2018
09:01:50

Алексей
03.09.2018
09:02:05

Google

Vladimir
03.09.2018
09:02:28
сейчас попробую
Можно добавить в каждой таблице по столбцу, содержащему константу и по нему джойнить

Bogdan
03.09.2018
09:03:40
то есть по сути будет две таблицы
первая с временными точками сгенерёнными через numbers и нулями
вторая будет с нужными группировками string столбцов
надо смёржить эти две таблицы так чтобы все группы string имели по всем временным точкам
как-то так
это всё костыли к тому как бы вместо провалов пихать нули в качестве значений ибо я не представляю как сделать иначе

Vladimir
03.09.2018
09:05:33
select * from (select *, 1 as c from t1) all inner join (select *, 1 as c from t2) using c

Bogdan
03.09.2018
09:06:43
выглядит как костыль конечно, но элегантный))

papa
03.09.2018
09:12:25
а cross join не работает разве?

Bogdan
03.09.2018
09:13:02
я его даже в доке не увидел, UPD: cross join тоже работает кстати, но по нему доки нету
https://github.com/yandex/ClickHouse/issues/2857

Antowa
03.09.2018
09:13:42
Исходники Кликхауса для меня слишком масштабные, чтобы сейчас в них искать точный ответ на этот вопрос
Ещё вопрос: если задать zstd вместо lz4, данные пережмутся в фоновом режиме, или это требуется вызывать принудительно? Хотя побаиваюсь вообще что-то делать с датасетом на полтора тб.


Wolf
03.09.2018
09:18:10
сжатые там данные или не сжатые ,а у ж чем пожаты это второй вопрос

Google

Sergey
03.09.2018
09:21:12
runningDifferenceStartingWithFirstValue,runningAccumulate,runningDifference ?
Я так понимаю эти функции нельзя использовать при изменяющихся devId. Если в таблице несколько devId:
date | devId | eventDateTime
2018-08-01 | 100 | 2018-08-01 12:00:00
2018-08-01 | 100 | 2018-08-01 12:10:00
2018-08-01 | 100 | 2018-08-01 12:15:00
2018-08-01 | 200 | 2018-08-01 12:00:00
2018-08-01 | 200 | 2018-08-01 12:05:00
то надо вернуть
devId | eventDateTime | fromPrev
100 | 2018-08-01 12:00:00 |
100 | 2018-08-01 12:10:00 | 600
100 | 2018-08-01 12:15:00 | 300
200 | 2018-08-01 12:00:00 |
200 | 2018-08-01 12:05:00 | 300

Alexey
03.09.2018
09:24:17
Привет.
А можно как-нибудь изменить формат логов Кликхауса? Убрать\добавить колонки, изменить формат таймстемпа, всё в таком духе

Michal
03.09.2018
09:25:09

Vasilij
03.09.2018
09:31:24

Michal
03.09.2018
09:32:22
Ну т.е. что-то типа
SELECT date, sum(column1), sum(column2) FROM (
SELECT date, column1, column2 FROM realtable
UNION ALL
SELECT today() + number, 0,0 FROM numbers(100)
) GROUP BY date

Sergey
03.09.2018
09:33:23

Bogdan
03.09.2018
09:33:39
то есть этот вариант работает только если group by date и никаких других группировок нет


Michal
03.09.2018
09:48:42
Даже тогда JOIN не обязателен, вместо numbers можно использовать range + arrayJoin.
SELECT ... FROM
(
SELECT id1, id2, date, ... FROM table
UNION ALL
select id1, id2, arrayJoin( arrayMap( x -> today() + x, range(10) ) ) as date2
from table
WHERE date=today()
GROUP BY id1, id2
)
GROUP BY id1, id2, date


Sergey
03.09.2018
10:05:47

Dmitry
03.09.2018
10:06:05
Подскажите как вставлять (insert) записи пачками?
Словил ошибку "Too many parts (300). Merges are processing significantly slower than inserts".
Только через файлы csv, tsv ?

Stanislav
03.09.2018
10:06:52
не пачку инсертов, а инсерт пачки нужен
что-то типа INSERT .... VALUES (....), (...), (...) ...
Грубо говоря, один инсерт - одна новая часть на диске.

Michal
03.09.2018
10:07:56

Dmitry
03.09.2018
10:09:06
они никак не склеиваются? записей же миллионы

Stanislav
03.09.2018
10:09:30
Можно в таблицу типа Buffer, тогда немного полегче

Google

Stanislav
03.09.2018
10:09:38
Но тоже не панацея

Dmitry
03.09.2018
10:09:44
у нас так свалился сервер, создало 20 миллионов файлов


Michal
03.09.2018
10:09:54
или например
INSERT INTO table FORMAT JsonEachRow
{"id":1,"str":"первая строка данных"}
{"id":2,"str":"вторая строка данных"}
{"id":100,"str":"строка данных номер 100"}
они никак не склеиваются? записей же миллионы
Одна из особенностей кликхаус - данные нужно вставлять пачками. Нельзя по одной строке. Т.е. или вы напишете один инсерт и потом в нем перечислите 100 тысяч строк для вставки - то это хорошо, а если сделаете 100 тысяч инсертов по одной строке - то это очень плохо.
Есть масса разных способов для преодоления этой проблемы. Один из них - это встроенный движок Buffer который лояльно относится к инсертам по одной строке и перебрасывает данные в финальную таблицу по мере накопления. Но он имеет свои ограничения, поэтому его обычно не рекомендуют широко использовать.
Ещё один - использование кафки.
Ну или любого внешнего софта, который позволит где-то накопить побольше данных перед тем как запихнуть их в кликхаус.


Oleg
03.09.2018
10:17:10
Ещё один - использование кафки.
А как обрабатывать плохие данные в кафке? Я пытался так сделать и не нашел. Если кликхаусовский движок kafka не может распарсить данные, он просто бесконечно выдает ошибку.

Michal
03.09.2018
10:18:23
Если необходима какая-то фильтрация перед КХ - то наверное можно попробовать читать из "плохого" стрима и писать в "хороший" чем-нибудь для потоковой обработки. А кликхаус настроить чтоб читал "хороший".

Tima
03.09.2018
10:22:59


Michal
03.09.2018
10:26:23
Насколько я помню, сжимаются блоки с данными Native формата, а всё остальное (всякие номера пакетов и т. п.) передаётся без сжатия.
Сжатые данные устроены так. Они представляют собой набор сжатых фреймов. Каждый фрейм имеет следующий вид: чексумма (16 байт), идентификатор алгоритма сжатия (1 байт), размер сжатых данных (4 байта, little endian, размер не включает в себя чексумму, но включает в себя остальные 9 байт заголовка), размер несжатых данных (4 байта, little endian), затем сжатые данные. Идентификатор алгоритма: 0x82 - lz4, 0x90 - zstd. Чексумма - CityHash128 из CityHash версии 1.0.2, вычисленный от сжатых данных с учётом 9 байт заголовка.
См. CompressedReadBufferBase, CompressedWriteBuffer,
utils/compressor, TCPHandler.

Antowa
03.09.2018
10:28:02

Michal
03.09.2018
10:29:50

Aleksandr
03.09.2018
11:49:16
Приветствую. Подскажите пожалуйста, есть кластер из 4 нод (2 шарда по 2 реплики) хочу на всех 4 нодах открепить партицию в таблице за 1 запрос , нашел ноду с признаком в system.replicas is_leader=1 , есть 2 таблица:
tablename = Distributed
tablename_sharded = ReplicatedMergeTree
делаю так:
alter table database.tablename detach partition ’201807’ и получаю:
DB::Exception: Method dropPartition is not supported by storage Distributed.
или же alter table detach не реплицируется?
ClickHouse client version 1.1.54383.
и правильно ли я понимаю что если я хочу открепить партицию на каждой ноде отдельно то нужно делать:
alter table database.tablename_sharded detach partition ‘201807’ на каждой ноде?

Mike
03.09.2018
11:53:22
alter table database.MergeTree-table on cluster xxx должно сработать

Google

Aleksandr
03.09.2018
11:55:08
понял, спасибо большое

Artem
03.09.2018
12:22:21
привет!
пожалуйста, дайте совет - как сделать так, чтобы аггрегатная функция count возвращала 0, если записей нет?

Алексей
03.09.2018
12:24:02

Eduard
03.09.2018
12:26:41
можно ли использовать haproxy для балансировки между 2-мя репликами?

Mike
03.09.2018
12:29:44

Eduard
03.09.2018
12:33:30
@Mike_Er не подкините пример с боевого сервера?

Mike
03.09.2018
12:33:58
Конфига хапрокси?

Eduard
03.09.2018
12:34:07
да

Yuran
03.09.2018
12:55:44
То есть вам нужно просто обновить кликхаус ?

Artem
03.09.2018
12:56:55

Yuran
03.09.2018
12:58:09
на версии 1.1.54385 уже выдает
на 1.1.54342 ещё нет

Artem
03.09.2018
12:58:31
1.1.54343 у меня эта стоит

Yuran
03.09.2018
12:58:50
сильно больше версий у меня в продакшене нет ?

Artem
03.09.2018
12:59:20

Yuran
03.09.2018
12:59:21