
Виктор
15.11.2016
15:16:02
Только через group by

f1yegor
15.11.2016
15:16:24
Exception: Storage ReplicatedMergeTree doesn't support FINAL.

Igor
15.11.2016
15:16:26
а в ReplicatedCollapsing ОК? круто

Виктор
15.11.2016
15:17:08
Ну да, для Collapsing работает FINAL

Google

Виктор
15.11.2016
15:17:10
для любого

f1yegor
15.11.2016
15:17:11
ну да, у меня раньше было ReplacingMergeTree, я для HA мигрировал в ReplicatedMergeTree, и дедупликацию по неосторожности потерял
т.е. в ReplicatedReplacingMergeTree будет все работать?

Виктор
15.11.2016
15:20:40
ReplicatedReplacingMergeTree о_О
Я не особо знаю про Replacing честно говоря

f1yegor
15.11.2016
15:21:10
да, он не документирован

Виктор
15.11.2016
15:21:58
Тогда лучше Лёшу спрашивать
@milovidov_an

Roman
15.11.2016
15:24:24
попробовал. работает FINAL в ReplicatedReplacingMergeTree

f1yegor
15.11.2016
15:24:43
да, я уже тоже попробовал)

Виктор
15.11.2016
15:25:56
А он работает в смысле не падает или работает в смысле работает?
Ключи то схлопывает?

f1yegor
15.11.2016
15:26:19
схлапываются

Google

f1yegor
15.11.2016
15:28:00
еще глупый вопрос - когда начал команду вводить, и еще не запустил, как ее отменить и начать ввод новой? т.е. получить пустую строку

Igor
15.11.2016
15:35:14
никак, похоже. Ctrl+D игнорируется, если текущая строка не пуста, Ctrl+C выходит из CLI

Alexey
15.11.2016
15:35:49
Ctrl-A Ctrl-K ?

Igor
15.11.2016
15:36:27
кстати да, как вариант, если всего одна строка
если много - проще ctrl+c up enter :))

Виктор
15.11.2016
15:42:30
я обычно ставлю ; и жму enter
ругается на ошибку и даёт писать заново =)
ну или если не -m то можно и без ;

Igor
15.11.2016
15:42:57
с другой стороны, history засоряется :(

Виктор
15.11.2016
15:43:06
Кстати, всем рекомендую clickhouse-client -m

Igor
15.11.2016
15:43:12
да, multiline прекрасен

Виктор
15.11.2016
15:43:19
у меня alias прописан cm = clickhouse-client -m

Igor
15.11.2016
15:43:39
у меня еще -f PrettyCompactMonoBlock (который мне, конечно, лень добавить в конфиг)
А то prettycompact как-то стремно делит результаты на отдельные таблицы :)

f1yegor
15.11.2016
15:44:26
писали почему моноблок может работать плохо, потому что ему надо дожидаться всех данных

Igor
15.11.2016
15:44:40
дада
ну, это меня не смущает, лишь бы КРАСИВО :)

Виктор
15.11.2016
15:53:59
Если делается group by, то это не важно

f1yegor
15.11.2016
15:58:48
но было бы хорошо сделать обработку Ctrl^C

Виктор
15.11.2016
16:23:08
Когда запрос выполняется, оно работает нормально.
В смысле - отменяет запрос

Google

Виктор
15.11.2016
16:23:32
А когда запрос не дописан, действительно можно просто enter нажать же

f1yegor
15.11.2016
16:23:48
нужно отменять когда еще не выполняется, как в консоли

Виктор
15.11.2016
16:24:09
Наверное, да.
Сделаешь pull request? =)

f1yegor
15.11.2016
16:24:38
у меня с C++ не очень

Виктор
15.11.2016
16:26:22
Можешь поставить issue в гитхабе, кто-нибудь сделает, я думаю.
Задача для новичка самое то.

f1yegor
15.11.2016
16:26:52
это сделаю

Виктор
15.11.2016
16:28:23
Отлично, спасибо!

f1yegor
15.11.2016
16:39:15
так вот, если у меня таблица events = ReplicatedMergeTree(.../events), и мне надо перелить ее в другую Replicated таблицу, т.е. я хочу сделать events = Replicated....MergeTree(../events), то как это сделать без даунтайма? т.е. проблема в том что я не смогу потом у таблицы изменить пути зукипера

Виктор
15.11.2016
17:07:21
Не отвечу, лучше письмом на рассылку или в гугл групс

Kirill
15.11.2016
18:54:28
Допустим у нас есть таблица со столбцами: key version value
key + version = уникальный ключ
key = индексный столбец
version = версия данных
value = сами данные
Как делать запрос с WHERE ... GROUP BY key, но чтобы в результатах учавствовали только строки с максимальными значениями поля version в пределах ключа key с учетом WHERE?
Например, если взять вот такие данные для примера:
1 1 10
1 2 20
1 3 30 #строка с максимальной версией для key=1
2 1 100
2 2 200 #строка с максимальной версией для key=2
то такой запрос должен выдать:
1 30
2 200

Mike
15.11.2016
18:56:16
Это попытка реализовать апдейт данных на "неограниченном" жёстком диске? :)

Kirill
15.11.2016
18:56:20
Сase использования: допустим, мы забираем статистику по API у какого-то сервиса. Ключи остаются теми же, а цифры всегда растут каждый час и при очередной вставке мы увеличиваем version. А при выборке гарантией самых свежих данных из API будет то, что мы всегда выбираем строки с максимальным version в пределах ключа.

Vladislav
15.11.2016
19:00:11

Roman
15.11.2016
19:00:21
replacingmergetree смотрел? или materialized view на основе replacingmergetree?

Kirill
15.11.2016
19:01:58

Fike
15.11.2016
19:02:13

Kirill
15.11.2016
19:02:42

Google

Kirill
15.11.2016
19:04:38

Vladislav
15.11.2016
19:04:52

papa
15.11.2016
19:07:42
Допустим у нас есть таблица со столбцами: key version value
key + version = уникальный ключ
key = индексный столбец
version = версия данных
value = сами данные
Как делать запрос с WHERE ... GROUP BY key, но чтобы в результатах учавствовали только строки с максимальными значениями поля version в пределах ключа key с учетом WHERE?
Например, если взять вот такие данные для примера:
1 1 10
1 2 20
1 3 30 #строка с максимальной версией для key=1
2 1 100
2 2 200 #строка с максимальной версией для key=2
то такой запрос должен выдать:
1 30
2 200
select key,argMax(value, version) from (select 1 as key, 1 as version, 10 as value union all select 1 ,2,20 union all select 1, 3, 30 union all select 2,1,100 union all select 2,1,200) group by key

Roman
15.11.2016
19:08:44
Читал, но поверхностно - еще почитаю.
документации к replacing нет. вот тут пара строк в комментах https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/StorageFactory.cpp#L524

Kirill
15.11.2016
19:08:49
Ого

papa
15.11.2016
19:09:02
в последней строке опечатка, должно быть 2,2,200, тогда отдается 2 200.

Kirill
15.11.2016
19:12:11
Всем огромное спасибо, поизучаю!

f1yegor
15.11.2016
19:20:48
по ReplacingMergeTree просто посмотри тесты в репозитории

Kirill
15.11.2016
19:27:43

Vladimir
16.11.2016
09:52:01
джва года ждал (с)

Vladislav
16.11.2016
10:19:54
еще бы адаптировать CH под Anchor model и цены ему не будет...

Evgeniy
16.11.2016
10:20:20
что за модель

Dmitrii
16.11.2016
10:21:03
Да-да, мы когда на кликхаус пересели, я долго не мог поверить, что это не закешированные данные, а посчитанные на лету.

Vladislav
16.11.2016
10:38:25

Evgeniy
16.11.2016
10:43:11
http://www.anchormodeling.com/
Я бы тоже в булушную на Самосвале ездил бы , а че , колеса есть ) Руль то же круглый и мтотор мощный..
- Я правильно понимаю что Anchor создавался для ERP шек ?

Vladislav
16.11.2016
10:45:01

Roman
16.11.2016
10:45:33

Vladislav
16.11.2016
10:46:32
Вот еще до кучи: http://synthesis.ipi.ac.ru/sigmod/seminar/s20151126

Roman
16.11.2016
10:49:35

Google

Roman
16.11.2016
10:49:55
Или даже звездой?
Набором звезд.

Vladislav
16.11.2016
10:50:14
не совсем
у Anchor три сущности, а не две
там 6NF, идет избыточность таблиц, но это дает полную гибкость в плавном подключение новых сущностей, без затрагивания существующих
сделать это на CH можно, но проблема состоит потом собрать это JOIN'ами

Roman
16.11.2016
10:52:25
Таблицы атрибутов = словари в КХ

Vladislav
16.11.2016
10:53:01

Evgeniy
16.11.2016
10:54:01

Roman
16.11.2016
10:54:32

Vladislav
16.11.2016
10:54:49
я не сказал, что не получится