
Alex
10.01.2018
10:28:45
это для примера

papa
10.01.2018
10:29:52
у вас в a > 0 а - это что должно быть, то что вы суммируете или sumState?

Alex
10.01.2018
10:30:21
ок понял
... AS SELECT sumState(a) as sum_a, sumState(b) as sum_b, CASE WHEN sum_a > 0 THEN (sum_b / sum_a) ELSE 0 END AS c ...

Google

Alex
10.01.2018
10:31:25
sum_a > 0 вот это как я понимаю и не провильно

papa
10.01.2018
10:32:08
ага, хорошо. а что вы хотите сделать, использовать то, что уже внутри просуммировалось?

Alex
10.01.2018
10:32:50
да, имено то что уже просуммировалось

papa
10.01.2018
10:33:09
finalizeAggregation

Alex
10.01.2018
10:34:04
а где же про такое прочитать?)
и обернуть там где только с 0 сравнение или в деление тоже?
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Columns/ColumnAggregateFunction.cpp#L33

papa
10.01.2018
10:40:05
прочитать "про такое" можно в документации, в system.functions и в сорсах.
обернуть везде, AggregateFunction(_) значения мало в какие функции можно передавать.

Alex
10.01.2018
10:41:01

Andrey
10.01.2018
11:38:49
Всем привет!
Возникла проблема, есть ряд сломавшихся запросов на репликацию, которые уже давно пытаются выполниться и видимо не смогут по причине отсутствия партиции.
Я видел что ранее всем советовали удалить эти запросы из очереди в zookeeper.
Я удалил их из zookeeper, но не вижу чтобы они удалились из replication_queue в CH
Как часто CH синхронизируется с ZK?
Или как форсануть этот процесс ?

Alex
10.01.2018
11:53:38
можно сделать DETACH/ATTACH таблицы

Google

Alex
10.01.2018
11:54:16
или просто перезапустить сервер


Alex
10.01.2018
12:11:11
Нет, такого нет.
а подскажи пожалуйста, кх мержит куски пока не останется только один? потому что у меня по стате видно что есть старые данные и в них по 2 - 3 куска осталось,а в свежих побольше

Alex
10.01.2018
12:13:27
Фоновые мержи чаще всего не доводят до одного куска - эвристика такая, что если осталось всего несколько больших кусков, ещё раз мержить (тем самым ещё разок перезаписав данные) нет смысла.

Vlad
10.01.2018
12:14:22
Добрый день. Скажите, пожалуйста, изменилась ситуация с перешардированием с июня 2016? В документации указано, что функционал в состоянии беты.

Alex
10.01.2018
12:15:32
Изменилась в худшую сторону - перешардирование вообще удалили :) Будем переосмысливать задачу.

Alex
10.01.2018
12:15:45

Дмитрий
10.01.2018
12:16:28

Alex
10.01.2018
12:18:22
Настройка влияет на то, как данные отсылаются.

Дмитрий
10.01.2018
12:20:31
По факту там получается два способа отправить данные не сжато, и три способа сжать их разными методами. А сама настройка влияет только на флажок включения компрессии. Это видимо по историческим причинам.

Alex
10.01.2018
12:25:54
Это вы где смотрите? Вот код: выбираем сжатие на клиенте (для отправки данных INSERT): https://github.com/yandex/ClickHouse/blob/master/dbms/src/Client/Connection.cpp#L392 , вот на сервере (для отправки результатов запроса): https://github.com/yandex/ClickHouse/blob/master/dbms/src/Server/TCPHandler.cpp#L667
в обоих случаях настройка влияет на выбор алгоритма сжатия


Дмитрий
10.01.2018
12:44:15
https://github.com/yandex/ClickHouse/blob/master/dbms/src/IO/CompressedWriteBuffer.cpp#L102
Получается можно включить флажок компрессии но слать данные не сжато с методом NONE
Второй способ слать их не сжато - не включать флажок здесь:
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Client/Connection.cpp#L358
При этом способы подготовки несжатых блоков будут различаться. (в первом случае нужна чексумма)
Выбор алгоритма декомпрессии совсем не завязан на то что мы отправили в network_compression_method, а зависит от первого байта блока и выбирается тут: https://github.com/yandex/ClickHouse/blob/master/dbms/src/IO/CompressedReadBufferBase.cpp#L100

Alex
10.01.2018
13:12:31

Дмитрий
10.01.2018
13:14:22
Да, это до меня уже дошло. А зачем тогда её отправлять в сервер?
А нет планов убрать два способа отправки не сжатых данных? Я конечно это закостылю, но хочется кастануть сразу правильный костыль.

Alexey
10.01.2018
13:21:51

Google

Alexey
10.01.2018
13:25:09

Дмитрий
10.01.2018
13:32:43
Спасибо за разъяснения.
А у вас нет тестов, с какого размера блока становится выгодно сжимать данные с LZ4, а до какого - отправлять без сжатия совсем. У нас получается так, что когда мало CPU и хорошая сеть - блоки со строками либо с рандомными данными выгодно жать когда в них счет строк начинает измеряться сотнями. Когда много CPU либо плохая сеть - выгодно жать ZSTD во время простоев.


Alexey
10.01.2018
13:36:52
Точных измерений нет. Мы включили zstd на кластере, который упирался в сеть. Это может быть видно одним из двух вариантов: 1. Используется вся полоса. 2. Большой packet loss. Это можно наблюдать по счётчику tcp retransmits - если больше где-то нескольких процентов.
Для эксперимента очень легко поменять network_compression_method и проверить.
Чексумма сжатых данных нужна по нескольким причинам. 1. При всяких повреждениях (bit rott на диске как пример), бьются именно сжатые данные. 2. Некоторые алгоритмы сжатия не умеют безопасно сообщать об ошибке при битых данных при разжатии. Бонус - вычислять чексумму для сжатых данных существенно проще, чем для разжатых, потому что их меньше, и их не надо разжимать перед этим.
Правильно хранить две чексуммы - для сжатых и для разжатых данных. На самом деле мы так и делаем - при хранении в MergeTree таблицах. Там даже ещё круче - три чексуммы - целиком на файл для сжатых данных, для несжатых данных, и ещё на каждый сжатый блок - для сжатых данных.
А при передачи по сети - чексуммы только для сжатых данных на каждый блок, так как больше - оверкилл.


Eugene
10.01.2018
13:55:25
Коллеги, подскажите пожалуйста, нужно сделать выборку по диапазонам.
Есть поле load_time выборка будет что то типа
countIf(load_time < 1),
countIf(load_time >= 1 AND load_time < 2),
countIf(load_time >= 2)
Диапазоны должны расчитываться на основе данных из поля load_time
Мне нужно всегда статическое кол-во диапазонов - 3.
Кроме квантилей ничего в голову пока что не приходит.

papa
10.01.2018
14:13:17
а чем вам не подходят перечисленные выше диапазоны

Eugene
10.01.2018
14:16:07

papa
10.01.2018
14:18:48
обычно диапазоны нужны либо фиксированные "по горизонтали", т.е. гистограмма по регулярной сетке, либо "по вертикали", т.е. quantiles() с каким-то набором параметров.
если вы меряете скорость загрузки страниц, то может вам подойдет количество медленных загрузок, может вам нужен график квантилей, может еще что-то.
а если вы получите из данных медиану, а потом посчитаете что countIf больше медианы содержит половину всех данных, то какая в этом будет польза.

Дмитрий
10.01.2018
14:27:36

Eugene
10.01.2018
14:28:37

Igor
10.01.2018
14:33:45
Привет всем,
А подскажите как подключить ClickHouse к Tableau на MacOS??

Alexey
10.01.2018
14:34:20

Igor
10.01.2018
14:37:12
А может кто-то подключал через SQL proxy??

R-omk
10.01.2018
14:55:03
Есть тикет на то что Distributed таблица не работает с MATERIALIZED колонками ?
@milovidov_an смотрел че join таблицы c кривыми данными в колонках? я тикета не нашел , и предыдущий коммент глянь ^^^.

Alex
10.01.2018
15:50:39
/stat@combot

Combot
10.01.2018
15:50:39
combot.org/chat/-1001080295593

Alexey
10.01.2018
15:59:08

Google

Alexey
10.01.2018
16:01:46
мне кажется, все прекрасно работало, правда потом в локальной таблице я переделал на ALIAS, чтобы это значение бралось по состоянию на сейчас, а не на тогда

R-omk
10.01.2018
16:13:42

Alexey
10.01.2018
16:17:48
их там не надо задавать, зачем
просто тип описать и всё
а задаётся в той таблице, куда смотрит Distributed

R-omk
10.01.2018
16:21:12

Alexey
10.01.2018
16:24:11
CREATE TABLE partd (
day Date,
id UInt64,
partner_id UInt64
) ENGINE = Distributed ('stats', 'db', 'part')
CREATE TABLE part (
day Date,
id UInt64,
partner_id UInt64 MATERIALIZED id + 100
) ENGINE = MergeTree(...)
insert into partd (day, id) values ('2018-01-09', 777);

R-omk
10.01.2018
16:29:25
здесь шарда отвечат что не вставлено поле event_date , хотя если напрямую вставлять в таблицу part то все ок

Alexey
10.01.2018
16:33:51
попробовал у себя, и правда не работает
а потом вспомнил, что сталкивался с такой проблемой

R-omk
10.01.2018
16:34:42

Alexey
10.01.2018
16:35:34
вот так работает
CREATE TABLE partd (
day Date,
id UInt64,
partner_id UInt64 DEFAULT id + 100
) ENGINE = Distributed (stats, 'default', 'part', rand())
CREATE TABLE part (
day Date,
id UInt64,
partner_id UInt64 DEFAULT id + 100
) ENGINE = MergeTree(day, (id, day), 8192)
:) insert into partd (day, id) values ('2018-01-10', 555);
INSERT INTO partd (day, id) VALUES
Ok.
1 rows in set. Elapsed: 0.004 sec.
SELECT *
FROM partd
┌────────day─┬──id─┬─partner_id─┐
│ 2018-01-10 │ 555 │ 655 │
└────────────┴─────┴────────────┘

R-omk
10.01.2018
16:37:12
да ,все понятно, пусть разбираются знатоки, нужен абсолютно конкретный случай
CREATE TABLE partd (
day Date,
id UInt64,
partner_id UInt64 DEFAULT id + 100
) ENGINE = Distributed (stats, 'default', 'part', rand())
CREATE TABLE part (
day Date,
id UInt64,
partner_id UInt64 DEFAULT id + 100
) ENGINE = MergeTree(day, (id, day), 8192)
не видел в доках примера где можно типы отписывать у Distributed ENGINE

Alexey
10.01.2018
16:40:41
так оно все лежит в /local/clickhouse/metadata/

R-omk
10.01.2018
16:41:40

Google

Edouard
10.01.2018
21:28:32
https://www.humblebundle.com/books/python-by-packt-book-bundle
Мало-ли вдруг кому пригодится.. (ссылка не реферальная), ранее на амазоне брал Mastering Python Networking по цене, большей чем весь набор по этой акции :)

Ololo
11.01.2018
03:56:16
Спасибо, купил.

Taras
11.01.2018
06:02:40
@milovidov_an, Алексей, добрый день!
Подскажите, пожалуйста, а можно в кликхаусе сделать ротацию данных с гранулярностью меньше, чем 1 месяц? Сейчас как это вижу- запускается крон задача, которая находит партиции старше определенного срока, делает их детач и удалет на уровне файловой системы из директории detached. На уровне отдельных частей партиции можно работать только при их присоединении. Будет ли работать следующий вариант?
1)сделать детач партиции, чей кусок дынных хочу оставить
2)сделать аттач частей этой партиции
3)на уровне файловой системы удалить ненужные части
если кто-то из присутствующих сталкивался с подобным кейсом, то буду признателен, если вы поделитесь опытом!

Georg
11.01.2018
06:39:10

Sergey
11.01.2018
06:39:25
или по неделям

Taras
11.01.2018
06:54:47
что имеется под хостовыми партициями? манипуляции с отдельными таблицами? формат партиций в ClickHouse имеет вид YYYYMM
Возможен такой вариант: партиционировать по дням, скриптом по крону удалять хвостовые партиции.
пардон, прочитал хвостовые как хостовые...

Sergey
11.01.2018
08:34:15
<Warning> Application: Logging to console, в чем может быть проблема? логи не пишутся в файл, запуск через docker

Taras
11.01.2018
08:43:59
опция
--daemon
https://github.com/yandex/ClickHouse/blob/d21a2a057b2cd4133cacdc7bea9643558a87797c/libs/libdaemon/include/daemon/BaseDaemon.h#L39

Egor
11.01.2018
09:05:11
есть какое-нибудь видео с конференции, где разбираются вопросы репликации, шардинга и эксплуатации в целом?

Roman
11.01.2018
09:32:40
Ребят, подскажите пожалуйста как обычно поступают с шардами, если кластер растет? То есть если я у меня сейчас 12 серверов, на которых я хочу сделать 6 шардов по 2 реплики, а завтра у меня будет 24 сервера, то есть какое-то красивое решение как "размазать" эти шарды? кроме создание новой таблицы и Insert into select? Очень нужен какой-то best practice на эту тему.

Cargeh
11.01.2018
09:36:40