@clickhouse_ru

Страница 155 из 723
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
внутри строки могут быть [ или ]
replaceregexpone с проверкой на ^ и $?

а так нельзя? 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"]','^\\[',''),'\\]$','')

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: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 таблица это таблица без ключа шардирования и нет возможности записать в неё что-то и попортить даннве на удаленных серверах?

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

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

По идее наличие чего-то вроде dictGetOrInsert решило бы. Или есть другой вариант решения?

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

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

Ну и опять же - в кдб это довольно просто реализовано. В целом похоже, но просто вставка автоматическая в словарь по сути.

Alexey
30.05.2017
15:25:20
Ну потому, что название маркет-инструментов это конечно словари. Просто их количество немного больше чем например количество регионов.
Два варианта: 1. Просто работать со строками. Часто это Ок. 2. Писать в таблицу хэши. SipHash64 - Ok. Отдельно писать в словарь. Его обновление может быть слегка асинхронным.

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 в дату при вставке?...

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"?

Страница 155 из 723