
Александр
29.08.2017
21:16:49
select count() from learners limit 1 by learnerId вызывает такую же ошибку.
Запрос вида select count(learnerId) from learners limit 1 by learnerId не спасает ситуацию.

Alexey
29.08.2017
21:17:26
Минимальный пример:
SELECT x FROM (SELECT 1 AS x, 2 AS y) LIMIT 1 BY y

Александр
29.08.2017
21:19:13
Я просто не знаю подробностей проблемы, поэтому играюсь с запросами, мало ли )

Alexey
29.08.2017
21:19:46
Это хорошо. Примеры полезные для разбирательств.

Google

Igor
29.08.2017
21:20:43

Alexey
29.08.2017
21:22:00
По большей части нет. Сегодня вечером выложили на один кластер. На остальные кластеры только завтра. Фактически у нас ноды растут с такой скоростью, что есть запас по крайней мере в несколько дней/неделю.

Igor
29.08.2017
21:26:50

Dmitriy
29.08.2017
21:29:51
после рестарта не поднимается ?
2017.08.30 00:28:12.256343 [ 1 ] <Error> Application: DB::Exception: Cannot create table from metadata file /opt/clickhouse/metadata/model//history_model_result_sharded.sql, error: DB::Exception: The local set of parts of table history_model_result_sharded doesn't look like the set of parts in ZooKeeper. There are 0 unexpected parts (0 of them is not just-written), 0 unexpectedly merged parts, 0 missing obsolete parts, 85 missing parts, stack trace:

Igor
29.08.2017
21:34:54
@milovidov_an Подскажи пожалуйста, если таблица которую удалили - через DROP TABLE ... осталась в ZK ... может на нодах почистить meta о ней ?

Александр
29.08.2017
21:36:42
Подскажите, а таблица с множеством Nested колонок и кол-вом значений в каждой Nested колонке от 1 до 300, но с маленьким кол-вом строк в самой таблице, до 250 000 это не сильно убьет производительность? Просто есть мысль симулировать update данных через ReplacingMergeTree. В общей сложности планируется в таблицу затолкать около 50 колонок из которых примерно 10 будут Nested.
Есть смысл вообще экспериментировать или нет? )

Dmitriy
29.08.2017
21:46:18
помогло убить файлик /opt/clickhouse/metadata/model//history_model_result_sharded.sql

Igor
29.08.2017
21:52:59
Для истории чата:
При ошибки, удаляли таблицу через DROP TABLE ... на каждой ноде и получили ошибку при рестарте CH
Application: DB::Exception: Cannot create table from metadata file
The local set of parts of table MYTABLE doesn't look like the set of parts in ZooKeeper. There are 0 unexpected parts
Обычно достаточно флага force restore data - см. В документации.
или
Попробуйте перенести файл /opt/clickhouse/metadata/model//MYTABLE.sql, в /tmp/ и перезапустить ноду


Andrey
30.08.2017
06:45:12
Всем привет. Помогите решить задачу в рамках СН. Есть таблица по покупкам. В ней есть колонки order_id, order_datetime, client_id. Необходимо для каждой строки покупки посчитать количество совершенных покупок клиентом до момента текущей покупки. Раньше мы в MySQL имели агрегационную таблицу, где для кажой покупки клиента, подсчитывалось количество покупок ранее сделанное им же. Не хочется делать какие-то агрегации в СН, ведь как раз от них мы и хотели отказаться с переходом аналитики на СН. Помогите, пожалуйста

Alexander
30.08.2017
06:47:34
А в чем вопрос?
Вместо агрегационной таблицы, вы просто делайте запрос, которым все посчитаете

Andrey
30.08.2017
06:49:22

Google

Andrey
30.08.2017
06:50:39
До этого все сложные выборки получалось делать, но вот для этого случая прям затык, в PG это можно было бы решить оконными функциями

Alexander
30.08.2017
06:51:17
А чем устривает тривиальное select count(*) from orders_table where client_id=X

Александр
30.08.2017
06:51:48
Там окно

Alexander
30.08.2017
06:51:59
А зачем оно там?

Andrey
30.08.2017
06:52:03
Этот запрос посчитает покупки за все время, а мне надо на момент каждой покупки.

Александр
30.08.2017
06:52:05
Нужно считать все покупки до момента текущей покупки

Andrey
30.08.2017
06:52:34

Alexander
30.08.2017
06:53:00
Так текущая покупка -- она же последняя
все остальные до нее

Александр
30.08.2017
06:53:31
У меня похожий кейс, только с нормальным распределением. Нужно было считать отклонение и среднее по тем данным, что были до определенного момента, что бы наверняка сказать возможно такое вхождение на фоне результатов или нет.
Тот запрос что вы предложили посчитает все и везде будет 10

Alexander
30.08.2017
06:55:03
Ну понятно, что каждая покупка увеличивает счетчик на один. Но это же и так понятно, зачем запрос делать?

Andrey
30.08.2017
06:55:13

Alexander
30.08.2017
06:55:41
Имеет смысл на текущий момент, текущую покупку, а в этом случае чистый count()

Старый
30.08.2017
06:56:51
У меня похожий кейс, только с нормальным распределением. Нужно было считать отклонение и среднее по тем данным, что были до определенного момента, что бы наверняка сказать возможно такое вхождение на фоне результатов или нет.
а как тебе такой кейс, 11 часовый поясов, 85 субьектов где каждый день продаются лекарства, носки, трусы, штаны тп, и каждая продажа должна быть в базе,и в олапе....
?я иногда читаю тз, и думаю, какие больные хотят это всё в 1 базу

Александр
30.08.2017
06:57:46
Хотят все и сразу

Старый
30.08.2017
06:58:20

Google

Александр
30.08.2017
06:58:24
У нас похожая ситуация. Хотят все и сразу, приходится извращаться )

Старый
30.08.2017
06:59:22
сейчас вот решают что будут брать, вертику, яндекскликхаус или клоудеру

Александр
30.08.2017
06:59:55
Как в итоге решили?
К сожалению в КХ нет оконных функций и такой запрос написать ну нельзя в рамках кх. Может быть функции в самом кх учитывают порядок данных и время, но результат я не проверял. Вынесли это дело в фоновые агрегаторы.

Alexander
30.08.2017
07:00:18
Я кажется понял. Андрей хочет кумулятивный счетчик (хотя в таком виде он мне и не понятен, интереснее суммы накапливать). В лоб это не делается, нужно развернуть данные в "косынку" (то есть к каждому ордеру цеплять отдельным запросом всю историю)

Andrey
30.08.2017
07:00:22

Александр
30.08.2017
07:00:48

Andrey
30.08.2017
07:01:06

Александр
30.08.2017
07:01:59
Я забыл...

Andrey
30.08.2017
07:03:58

Александр
30.08.2017
07:04:00
В кх же нет join on )

Andrey
30.08.2017
07:04:10
ага)

Александр
30.08.2017
07:04:20
Покс писал примерный запрос, вспомнил, что не сработает

Andrey
30.08.2017
07:04:24
нельзя доп. условие для джойна написать

Alexander
30.08.2017
07:04:39
select order_id, count(*), sum(prev_amount)
from orders
all inner join (select order_id, order_time prev_time, order_amount prev_amount from orders) using (order_id)
where prev_time < order_time
group by order_id;
Примерно в этом направлении

Александр
30.08.2017
07:05:57
Да, как то так получается

Uncel
30.08.2017
07:11:51
Кликхаус умеет работать со статическими huge pages? (2m/1g)

Andrey
30.08.2017
07:12:00

Vasiliy
30.08.2017
07:57:04
Добрый день, только начал изучать ClickHouse, какой Engine посоветуете для хранения кликов с возможностью суммирования по часам/дням/месяцам?

Google

Andrey
30.08.2017
08:08:49

Oleh
30.08.2017
08:08:50
ReplicatedMergeTree?

Tima
30.08.2017
08:10:36

f1yegor
30.08.2017
09:19:16
изменений не было чтобы поддерживать статистику запроса в HTTP header?
интересует
"rows_before_limit_at_least": 3,
"statistics":
{
"elapsed": 0.001121035,
"rows_read": 3,
"bytes_read": 645
}
из JSON format, но не используя его
я думаю это что-то такое https://github.com/yandex/ClickHouse/issues/208

Alexander
30.08.2017
09:34:50
В release notes было, или мне показалось

Sergei
30.08.2017
11:01:09
Добрый день!
подскажите пожалуйста, есть ли php коннектор с поддержкой сессий

Vladislav
30.08.2017
11:16:04

Igor
30.08.2017
11:20:24

Kirill
30.08.2017
12:10:06
А есть какие-то примерные сроки когда появится релиз с фиксом удаления партиций в зукипере или тестовая сборка (v1.1.54284) в пакетах ?


Dig
30.08.2017
12:13:51
Много узлов в log накапливается, если одна из реплик долго находится в неактивном состоянии. Эти ноды сохраняются для того, чтобы эта реплика могла подняться и синхронизироваться.
То есть, если у вас было несколько реплик, а потом один из серверов просто перестал работать, то до поднятия упавшей реплики, будут накапливаться ноды. Если реплика упала навсегда, то её придётся удалить из ZK вручную.
(Это одна из неудобных особенностей. С изменениями в версии 1.1.54276 это не связано.)
Вы пытаетесь сделать это в некотором интерфейсе, но он кидает исключение. Потому что не может получить большой список нод. Это проблема того интерфейса, с помощью которого вы пытаетесь удалить ноды.
Чтобы всё-таки всё по-нормальному сделать, придётся воспользоваться каким-то другим интерфейсом. Через zkCli.sh получается?
На крайний случай у нас есть специальная программа, которая может быстро удалить список нод... Если понадобится - расскажем, как воспользоваться.
Алексей, это как раз нас случай. Было три реплики. Один сервер остановили, а удалить ноду из ZK забыли. Через zkCli.sh не получается удалить, падает и при delete и при ls с путем /log. Как можно воспользоваться вашей специальной программой, чтобы удалить ненужные ноды? Спасибо.


Александр
30.08.2017
12:17:54
А кто-то может подсказать по <expression>rand64()</expression> внутри словаря? Есть дата рождения, нужно вычислить возраст пользователя. Можно как то написать expression что бы из даты рождения вычислять возраст при запросе?
Есть аналогичная ситуация со стажем. Есть дата когда сотрудник устроился на работу, нужно считать стаж в днях например.

Ilyas
30.08.2017
12:44:44

Александр
30.08.2017
12:47:41

Grigoriy
30.08.2017
12:56:03
Всем привет! Есть вопрос по настройке репликации. Имеется работающая реплика на 4 ноды. Есть задача заменить одну из нод на другую. Как это правильней делается? Есть какие-то подводные камни?

Maksim
30.08.2017
13:27:49
подскажите пожалуйста. Я хочу сгруппировать сессии по их длительностям. Сейчас вырисовывается такая конструкция: if(duration < 30, 30, if(duration < 120, 120, if(duration < 360, 360, if(duration < 3600, 3600, if(..... if(duration < 86400, 86400, 90000)....)))
это вообще правильный подход?
вот по такому if хочется сделать group by

Google

Igor
30.08.2017
13:30:41
может по CEILING(duration/30) подойдет?

Maksim
30.08.2017
13:34:11
о, наверное совсестить CEILING и логарифм
у меня потому что сессии от 5 секунд до 10 дней бывают

Igor
30.08.2017
13:36:30

Kirill
30.08.2017
13:42:34
там только 1.1.54283

Grigoriy
30.08.2017
13:51:32
есть у кого нибудь опыт замены реплицируемых нод?

Igor
30.08.2017
13:53:55
aptitude show clickhouse-server-base -> Version: 1.1.54284

Kirill
30.08.2017
13:55:31
ОК

Alexey
30.08.2017
14:37:23


Александр
30.08.2017
14:42:24


Alexey
30.08.2017
14:44:06
Всем привет. Помогите решить задачу в рамках СН. Есть таблица по покупкам. В ней есть колонки order_id, order_datetime, client_id. Необходимо для каждой строки покупки посчитать количество совершенных покупок клиентом до момента текущей покупки. Раньше мы в MySQL имели агрегационную таблицу, где для кажой покупки клиента, подсчитывалось количество покупок ранее сделанное им же. Не хочется делать какие-то агрегации в СН, ведь как раз от них мы и хотели отказаться с переходом аналитики на СН. Помогите, пожалуйста
Полностью в рамках ClickHouse решить это сложно. Идеальный вариант - если при каждой покупке, вы уже знаете предыдущее количество покупок (из отдельной базы, например), и затем пишете в лог в ClickHouse это общее количество отдельным столбцом. Тогда у вас в таблице будут строчки на каждую покупку, которые также содержат информацию об общем количестве предыдущих покупок.
В Яндекс.Метрике так сделано для истории посетителей. В таблице с визитами, для каждого визита есть ещё столбцы, содержащие информацию о накопленной истории.


Александр
30.08.2017
14:44:07
Написал прототип билдера запросов, который аналогично строит отчеты по данным в MySQL и КХ считает это добро за 0.003 секунды в Vagrant с 2-я ядрами и 4 гигами оперативы, а MySQL на продакшен сервере с таким справляется за 300мс. И это только один из показателей которые мы считаем за один запрос в API, а за один запрос мы можем выбирать до 10 разных показателей.