
Vladimir
29.05.2017
14:40:42
))) ограничения задаются лимитах для пользователя в users.xml Любой запрос должен умещаться либо в этот лимит либо ОП. Можно почитать подробнее про select в офф доке а также про опции externa by

Andrey
29.05.2017
19:18:29
Добрый вечер. Для range_hashed словаря, start_date или end_date может быть null?
"Если граница диапазона является NULL или является некорректной датой (1900-01-01, 2039-01-01), то диапазон следует считать открытым. Диапазон может быть открытым с обеих сторон."
Нашел.

Vladislav
29.05.2017
19:28:33
С 2039 по 1900... Интересно...

Google

Andrey
29.05.2017
19:37:25
А может ли у range_hashed словаря не быть атрибутов?
У меня просто id и start/end

Nikolai
29.05.2017
19:41:36
для такого словаря, кажется, должна работать dictHas

Andrey
29.05.2017
19:42:15
Работать то должна, но как его создать?
Если не указываю атрибутов то получаю DB::Exception: Dictionary has no attributes defined, e.what() = DB::Exception

Alexey
29.05.2017
19:48:44
/stat@combot

Combot
29.05.2017
19:48:44
combot.org/chat/-1001080295593

Nikolai
29.05.2017
19:51:56

Andrey
29.05.2017
19:52:18
А что ему в имя написать?
Он же по имени селектит.
А, хотя можно просто единичку.
Спасибо, попробую

Alexander
29.05.2017
21:29:50
Вопрос: есть в планах что-то вроде типа колонки связанной с dict? Возможно и вставку и выборку было бы легче делать. Хотя пойду перечитаю мануал ещё раз... не, не нашел, видимо вставки пока нет вообще.

Google

Vladislav
30.05.2017
09:11:01
привет. а можете подсказать, как эффективно посчитать значение столбца / максимум по столбцу? есть какие-нибудь встроенные функции, чтобы не делать джоины?

Romique
30.05.2017
09:54:11
Добрый день
Как в кликхаусе делать trim()?
Задача - удалить первый и последний символ строки
substring не может принять на вход length(str)-2 в качестве длины строки

Alex
30.05.2017
09:56:44
Может стоит сделать это перед инсертом?

Romique
30.05.2017
09:56:58
нет возможности
В колонке лежит ["abc","def"] в виде строки. Хочу сделать из этого массив из элементов "abc","def"
делаю через splitByChar, но тогда массив состоит из ["abc" и "def"]

Alex
30.05.2017
09:58:05
Возможно replaceRegexpOne ?

Romique
30.05.2017
09:58:17
внутри строки могут быть [ или ]
я хочу просто удалить первый и последний символ
substring(str,2,length(str-2))
вот такое

Igor
30.05.2017
10:00:23
а так нельзя?
lengyh(str)-2 as len, substring (str, 2, len)

Romique
30.05.2017
10:01:43
только константы можно, как написано в доках

papa
30.05.2017
10:02:36
в массивах для того чтобы взять последний элемент были придуманы отрицательные индексы. в substring c этими идеями, видимо, не дошли.

Romique
30.05.2017
10:04:54
А есть хотя бы одно логическое объяснение, почему отсутствует общепринятая во всем мире функция trim?

Google

papa
30.05.2017
10:05:39
есть, у Леши только две руки.

Pavel
30.05.2017
10:05:58
contribution very appreciate :)

Romique
30.05.2017
10:12:48
Хорошо, А какой формат для регекспа использовать в replcaeregexpone?
Делаю так:
select replaceRegexpOne('["pew","pow"]','^\[','')
Меняю первый [ на пустоту. По аналогии с тем, что в доках:
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
ничего не меняется

Alex
30.05.2017
10:18:57
SELECT replaceRegexpOne('["pew","pow"]', '^\\[', '')

Romique
30.05.2017
10:19:51
спасибо. а почему так? Все экранирование через двойной слеш?

Alex
30.05.2017
10:21:13
Боюсь соврать, но наверно один слеш это экранирование в строке, а второй уже в регэкспе

Romique
30.05.2017
10:22:31
Спасибо, в итоге сделал так
select replaceRegexpOne(replaceRegexpOne('["pew","pow"]','^\\[',''),'\\]$','')

papa
30.05.2017
10:23:36

Romique
30.05.2017
10:24:27
Внутри могут быть кавычячки

Alex
30.05.2017
10:30:30
Грубо говоря трим выглядит так ^.(.*).$
SELECT replaceRegexpOne('[[test], [test2]]', '^.(.*).$', '\\1') AS res
┌─res─────────────┐
│ [test], [test2] │
└─────────────────┘

Alexey
30.05.2017
10:39:20
Добрый день!
Можно ли заблокировать добавление значений в таблицу пользователем, оставив возможность создания временных таблиц?
readonly, насколько я понимаю, блочит и временные таблицы тоже.
https://github.com/yandex/ClickHouse/blob/master/docs/ru/access_rights.rst

Alexey
30.05.2017
10:48:59

Alexey
30.05.2017
10:49:43
Нужно, чтобы было всё readonly, но с возможностью создавать временные таблицы
Как вы своим аналитикам доступ даете?

Alexey
30.05.2017
10:52:39
Даём доступ на отдельную пару серверов, которые служат только точкой входа для распределённых запросов. Также они могут создавать там таблицы, как временные, так и мелкие постоянные (всякие справочники).

Alexey
30.05.2017
10:54:17
"точка входа" в терминах CH как выглядит? VIEW?

Alexey
30.05.2017
10:55:50
Физически отдельные серверы. Именно для аналитиков для доступа к большому кластеру.
(Обычные запросы из интерфейса идут на разные серверы кластера.)

Google

Alexey
30.05.2017
11:02:34
На этих серверах таблицы как созданы? ReplicatedMergeTree?

Felixoid
30.05.2017
11:03:53
подозреваю, Distributed
интересное решение

Yury
30.05.2017
11:05:44
Леша, как distributed таблица
У нас как раз так
@milovidov_an правильно понимаю что в случае отдельного сервера на котором distributed таблица это таблица без ключа шардирования и нет возможности записать в неё что-то и попортить даннве на удаленных серверах?

Alexey
30.05.2017
12:11:24

Yury
30.05.2017
12:14:27
Спасибо.

Alexander
30.05.2017
14:30:44
Вопрос: как сделать вставку большего количества повторяющихся строк? Логично бы применить словари, но получается по вставке постоянно надо всё проверять и обновлять словарь?
По идее наличие чего-то вроде dictGetOrInsert решило бы. Или есть другой вариант решения?

Maksim
30.05.2017
14:52:12
Зачем словари?

Andrey
30.05.2017
14:55:16

Alexander
30.05.2017
15:21:00
Ну потому, что название маркет-инструментов это конечно словари. Просто их количество немного больше чем например количество регионов.
Ну и опять же - в кдб это довольно просто реализовано. В целом похоже, но просто вставка автоматическая в словарь по сути.

Alexey
30.05.2017
15:25:20

Alexander
30.05.2017
15:26:41
1. Это слишком много лишних дынных.
2. Да, про второе понятно. Именно из-за этого и спрашиваю про планы, так как, по идее это можно решить намного проще.
Для реализации второго варианта очень много накладных расходов: отдельно вставлять , перегружать. Отдельно считать сити при вставке. По идее это всё одна функция могла бы несложно контролировать. Но тут упирается в наличие вставки в словарь в первую очередь.

Alexey
30.05.2017
15:28:33
Обычное сжатие данных покрывает кейс dict-кодирования. Про объём данных на диске можно не беспокоиться. Но строки сложнее обрабатывать по CPU.

Alexander
30.05.2017
15:29:28
Много выборок будет именно по этим строкам - не особо вариант. Причем не по шаблону, а просто сравнение - числа намного предпочтительнее.

Alexey
30.05.2017
15:30:55
сейчас мучаемся, выясняем, почему медленная вставка данных, пачки по 100к. Если делать дамп вручную из кликхауса, пачку 100к, и вставлять это обратно в кликхаус, то выходит 0,5 сек (формат Values, 17мб файлик). Если это делает наш самописный демон, он берет данные из сислогов, которые ему отправляют другие демона, выходит 5-6, бывает 8, и 10 секунд. Дампы отличаются только одним: демон в DateTime вставляет timestamp число, а в дампе, который вручную делаем, там в формате даты.

Google

Maksim
30.05.2017
15:31:04
Так у словаря нет хранения в кликхаусе

Alexey
30.05.2017
15:31:55
неужели такая разница из-за преобразования timestamp в дату при вставке?...

Alexander
30.05.2017
15:33:02

Maksim
30.05.2017
15:43:05
?
Кликхаус скачивает словари, записи то в словарь нет

Pavel
30.05.2017
15:44:03
получение текущего времени само по себе оверхедит

Alexey
30.05.2017
15:48:34
только что наконец написали адский awk, который переделал нам timestamp в этой пачке на дату, там внутри еще просто массивы были...
и реально, пол секунды заняла
вставк
то есть на пачке в 100к вставка DateTime в виде timestamp увеличивает минимум в 10 раз время выполнения

Alexander
30.05.2017
15:56:18

Maksim
30.05.2017
16:09:25
Так о том и вопрос :)
Так это масштабнейшая задача, добавить к колоночному стораджу еще перезаписываемую строчную бд

Alexander
30.05.2017
16:19:42
Ну если in-memory только , то немного проще, наверное. Таблицу словаря можно переодически обновлять руками из словаря, который в памяти.

Maksim
30.05.2017
16:42:33
А чем не годится cache?


Alex
30.05.2017
17:13:59
хелп, поставил на чистую машину
clickhouse-client
ClickHouse client version 1.1.54231.
Connecting to localhost:9000.
Code: 210. DB::NetException: Connection refused: (localhost:9000, ::1)
sudo netstat -nlp | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3771/clickhouse-ser
в логах сервера
2017.05.30 20:00:40.559134 [ 1 ] <Information> DatabaseOrdinary (default): Total 0 tables.
2017.05.30 20:00:40.559333 [ 1 ] <Information> DatabaseOrdinary (system): Total 0 tables.
2017.05.30 20:00:40.559562 [ 1 ] <Debug> Application: Loaded metadata.
2017.05.30 20:00:40.559885 [ 1 ] <Information> Application: Listening http://127.0.0.1:8123
2017.05.30 20:00:40.560042 [ 1 ] <Information> Application: Listening tcp: 127.0.0.1:9000
2017.05.30 20:00:40.560189 [ 1 ] <Information> Application: Listening interserver: 127.0.0.1:9009
2017.05.30 20:00:40.560351 [ 1 ] <Information> Application: Ready for connections.
2017.05.30 20:00:42.564114 [ 2 ] <Debug> ConfigReloader: Loading config `/etc/clickhouse-server/config.xml'
2017.05.30 20:00:42.565512 [ 2 ] <Warning> ConfigProcessor: Include not found: clickhouse_remote_servers
2017.05.30 20:00:42.565743 [ 2 ] <Warning> ConfigProcessor: Include not found: clickhouse_compression


Vladimir
30.05.2017
17:14:54
пытался подключиться точно после "Ready for connections"?