
Александр
18.04.2018
13:33:21
54370. 54378 не видел чейнджлог и не знаю пофиксили ее там или нет

M
18.04.2018
13:33:44
чейнджлог уже есть на 378

Sergey
18.04.2018
13:40:39
А повторю-ка я свой вопрос...
Всем привет. А не подскажете, как мне сджоинить массивы внутри ячеек?
Есть таблица, в ячейках которой имеются массивы с айдишниками (UInt32). Также есть таблица соответствия этих айдишников (UInt32) их неймам (String)
Необходимо сделать так, чтобы в массивах ячеек были не ИДы, а соответствующие им строки.

papa
18.04.2018
13:42:38
1. разджойнить массивы, приджойнить табличку, сгруппировать обратно, 2. словариь + arrayMap

Google

Michal
18.04.2018
13:44:39

Vitaly
18.04.2018
13:49:03
Всем привет!
Кто может подсказать, как можно посмотреть список подключенных клиентов к clickhouse-server?

Alexey
18.04.2018
13:53:33
Show processlist?

Sergey
18.04.2018
14:06:02

Kirill
18.04.2018
14:07:42

Vitaly
18.04.2018
14:07:59
Show processlist?
нет, в system.metrics есть TCPConnection отражающее кол-во активных tcp соединений
хочется посмотреть более дитальную информацию

Kirill
18.04.2018
14:08:05

Sergey
18.04.2018
14:14:58

Michal
18.04.2018
14:15:53

Kirill
18.04.2018
14:17:27

Michal
18.04.2018
14:20:19
Да и число уж очень ровное. Если что паттерн запроса примерно такой
SELECT
col1,
col2,
...sql
colN
FROM (
SELECT
col1,
arrayMap( ... , groupArray(col2)) as col2_all,
groupArray(colN) as colN_all
FROM (
SELECT col1,col2,...,colN FROM table ORDER BY time
)
GROUP BY col1
)
ARRAY JOIN col2_all as col2, ...,
colN_all as colN
ORDER BY col3, col5

Google

Michal
18.04.2018
14:25:27

Timur
18.04.2018
15:29:42
/stat@combot

Combot
18.04.2018
15:29:42
combot.org/chat/-1001080295593
combot.org/chat/-1001080295593

Harry
18.04.2018
15:54:08
Подскажите где копать - сделал материлизованное представление, при создании POPULATE залил данные, а вот дальше при добавлении данных в основную таблицу во вьюшку ничего не попадает.

Vladislav
18.04.2018
16:12:50
Привет. Подскажите, пожалуйста: выполняю INSERT INTO t1 SELECT * FROM t2, клиент крашится и пишет Aborted, по HTTP-интерфейсу то же самое. Куда посмотреть?

Slach
18.04.2018
16:19:53

Anton
18.04.2018
16:37:30
Здравствуйте
Подскажите пожалуйста как правильно создавать Materialized View над реплицируемыми таблицами так, чтобы он сам реплицировался?
Достаточно ли создать View поверх каждой реплики с каким-нибудь локальным движком?
Или движок View должен быть Replicated<...>?
Перечитал мануал, вроде разобрался, спасибо

Michal
18.04.2018
16:49:38
Приходите ещё :)

Egor
18.04.2018
16:55:17
Rubber duck debbuging как он есть :)

Kirill
18.04.2018
17:04:35

Alexey
18.04.2018
17:10:02
Вьюхи тоже replicated, на какую реплику прилетит инсерт, вставится во вьюху, и дальше по вьюхам тоже по репликации приедет
Если создадите обычные вьюхи, то в них не будут вставляться данные, только там, куда прилетает insert

Anton
18.04.2018
17:14:55


Alexey
18.04.2018
17:57:49
Сейчас будем разбираться с проблемой с IN.
Значит еще что-то сломали, делайте минимальный тест и заводите issue.
Там вагон косяков, я нашел баг, который вообще то неправильный результат, то ошибку возвращает, 50/50
https://github.com/yandex/ClickHouse/issues/2147
CREATE TABLE trololo (a date, b Int, c Int) ENGINE = MergeTree order by (a,b);
INSERT INTO trololo VALUES (0, 1, 3);
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.
second execution (wrong result):
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
0 rows in set. Elapsed: 0.003 sec.
third: Ok. 0 rows in set. Elapsed: 0.003 sec.
forth: Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.
Проблема в случае
(a, b) IN (SELECT (a, b) ...)
Но можно писать так:
(a, b) IN (SELECT a, b ...)
(без заворачивания внутренностей подзапроса в кортеж)
и всё будет Ок.
Вариант с кортежем у нас есть для совместимости, но в этом случае что-то не соответствует.


Denis
18.04.2018
18:59:58

Google

Alexey
18.04.2018
19:02:04
Да, уже выяснили - у нас баг.
На всякий случай:
SELECT (1, 2) IN (SELECT 1, 2);
- в MySQL работает.
SELECT (1, 2) IN (SELECT (1, 2));
- в MySQL так нельзя.
В Postgres:
SELECT (1, 2) IN (SELECT 1, 2);
- Ok.
SELECT (1, 2) IN (SELECT (1, 2));
- ERROR: subquery has too few columns Position: 15

Denis
18.04.2018
19:05:14
я бы сделал
SELECT (1, 2) IN (SELECT 1, 2); -- OK
SELECT (1, 2) IN (SELECT (1, 2)); -- ошибка типа
SELECT ((1, 2)) IN (SELECT (1, 2)); -- OK tuple in tuple

Alexey
18.04.2018
19:06:05
Ок. (Только вместо ((1, 2)) приходится писать tuple((1, 2)) ).

Denis
18.04.2018
19:06:25
ну, тоже нормально.

Vitaliy
18.04.2018
19:11:00

Daniel
18.04.2018
19:55:45
Добрый вечер! Воспринимает ли CH как-то во время вставки какой-нибудь escape symbol? То есть если у меня есть в тексте строки \t символ, и я импортирую tab separated, всё ломается.
Как бы заэкранировать этот \t при подготовке файла к импорту, чтобы он корректно вставился в контексте строки?

Maksim
18.04.2018
19:59:42

Alexey
18.04.2018
19:59:47
Если у вас в строке есть символ "таб", то его надо записать в виде \t. Аналогично "перевод строки" - как \n, и самое важное, "бэкслеш" - как \\ (два бэкслеша).

Daniel
18.04.2018
20:02:37

Александр
18.04.2018
20:11:01
Cannot read array from text: (at row 174) Could not print diagnostic info because two last rows aren't in buffer (rare case)
а вот такое откуда вообще берется? оО Пишу данные в TSV формате.

Alexey
18.04.2018
20:12:03

Александр
18.04.2018
20:13:00
Пишу по строчке в отдельный файл, потом эти строчки в фоне мерджу в один файл с данными и скидываю в КХ, но он ругается, что какой то мусор в данных и т.п.
Причем построчно такие данные вставляют корректно, а вот склеенные - нет.

Alexey
18.04.2018
20:13:19
Посмотрите на row 174, а конкретно, на массив или близкие к нему поля.

Александр
18.04.2018
20:13:47
Структура данные в строчках одинаковая везде.
Сложно, конечно, но придется разбираться. Спасибо!

Google

Alexander
18.04.2018
20:48:15
А не подскажете, есть ли в КХ какой-нибудь аналог explain для тюнинга запросов?

Александр
18.04.2018
20:49:15
Чт-то я уже все перерыл, так и не вижу проблемы в массиве. У меня пишется 83 колонки из которых бОльшая часть массивы. Это Nested колонки. Я прям всю строчку перевернул в JSON из TSV формата (распарсил TSV) и вывел в PrettyPrint. Они с нулевой начинаются или с первой?

Alexey
18.04.2018
20:51:58
Попробуйте оставить в файле несколько строк рядом с указанной и загрузить эти три строки.


Alexander
18.04.2018
20:54:43
Вроде бы нет такой штуки. Можно только логи мониторить. Там частично есть план выполнения запроса.
По логам - это да, но это не очень удобно.
А по поводу распределения запроса по нодам.
Как понять, где какая часть выполняется:
Expression
MergeSorting
PartialSorting
Expression
Aggregating
Concat
Expression
Expression
Expression
Aggregating
Concat
Expression
Expression
Expression
Aggregating
Concat
Expression
Expression
Expression
Aggregating
Concat
Expression
Expression
Expression
MergingAggregatedMemoryEfficient
Materializing
ParallelAggregating
Expression × 12
Filter
MergeTreeThread
Remote × 2?

Александр
18.04.2018
20:55:28

Alexey
18.04.2018
21:00:06
ParallelAggregating
Expression × 12
Filter
MergeTreeThread
Этот кусок выполняется параллельно на всех шардах.

Alexander
18.04.2018
21:02:09
Т.е. всё ниже Parallel... делается параллельно на разных нодах?

Александр
18.04.2018
21:04:30
Попробуйте оставить в файле несколько строк рядом с указанной и загрузить эти три строки.
https://img.facedsid.ru/tohac.jpg вот что показывает. Проверил эту колонку. В ней все ок. Вот значения https://img.facedsid.ru/3x8bi.jpg. Только я заметил один момент. Колонка у меня типом UInt8, а там в списке значений видно -1. Поправил структуру таблиц и все стало ок! Печально, что КХ не ругнулся, что тип значения некорректный ( Но я так понял, что есть там свои сложности.
Спасибо за рекоммендацию уменьшить кол-во значений в файле. Благодаря этому удалось найти конкретную колонку в которой проблема :)

Alexey
18.04.2018
21:05:12
Более сложная логика.
То, что глубже Remote - делается на удалённых нодах.
Но эта часть плана не видна на сервере-инициаторе.
Но в данном случае есть точно такая же часть плана с локального шарда, и она видна. На других шардах делается то же самое удалённо.

Александр
18.04.2018
21:08:49
Т.е. он дошел до значения, которое битое в массиве и его не показал. Вместо него просто ERROR. Не совсем очевидно где именно ошибка ( С таким количеством данных очень сложно отследить :(

Alexey
18.04.2018
21:09:59
Ага.

Артемий
18.04.2018
22:29:27

Slach
19.04.2018
05:14:26
Мнда, latest Docker образ clickhouse сломался в части совместимости с zetcd окончательно теперь даже создать ReplicatedMergeTree таблицу не может. не то что "второй раз вставить данные"
https://github.com/yandex/ClickHouse/issues/777#issuecomment-382612686
жаль =(

Kirill
19.04.2018
05:17:13

Google

Slach
19.04.2018
05:20:03

Kirill
19.04.2018
05:21:42


Michal
19.04.2018
05:50:07
SELECT version()
┌─version()─┐
│ 1.1.54362 │
└───────────┘
:) show create table geoip2_city_blocks_ipv4 format TSVRaw;
CREATE TABLE source_data.geoip2_city_blocks_ipv4 ( network String, geoname_id UInt64, registered_country_geoname_id UInt64, represented_country_geoname_id UInt64, is_anonymous_proxy UInt8, is_satellite_provider UInt8, postal_code String, latitude String, longitude String, accuracy_radius String) ENGINE = Log
1 rows in set. Elapsed: 0.002 sec.
:) select count(*) from geoip2_city_blocks_ipv4;
┌──count()─┐
│ 10503254 │
└──────────┘
1 rows in set. Elapsed: 0.006 sec. Processed 10.50 million rows, 10.50 MB (1.84 billion rows/s., 1.84 GB/s.)
:) select * from geoip2_city_blocks_ipv4 into outfile '/tmp/tmp2.tsv';
131072 rows in set. Elapsed: 0.173 sec. Processed 1.18 million rows, 126.13 MB (6.82 million rows/s., 729.59 MB/s.)
:) select * from system.settings where value = '131072';
Ok.
0 rows in set. Elapsed: 0.003 sec.Почему 131072 строк в результате?
В логах 2018.04.19 07:54:48.736937 [ 70 ] <Information> executeQuery: Read 1179648 rows, 120.55 MiB in 0.083 sec., 14154395 rows/sec., 1.41 GiB/sec.


Alexey
19.04.2018
05:56:05
Посмотрите select * from system.settings WHERE changed
Для настройки max_result_rows и подобных, ограничение срабатывает мягко - может читаться немного больше строк, чем выставлено в ограничении.

Michal
19.04.2018
06:04:04
Ок. Нашлось. Виноват был max_result_rows=100000 + result_overflow_mode=break. Изменял профиль пользователя на кастомовый и забыл об этом. Спасибо.

Alex
19.04.2018
06:13:18
Доброе утро, коллеги! В CH еще не нарисовался update ?

Stas
19.04.2018
06:34:39
Чат, а что то близкое к оракловскому LEAD на что можно в CH заменить?
Думаю в сторону runningdifference но вдруг есть более красивое решение :)

Igor
19.04.2018
06:58:59
Обновил Tabix - build 18.04.1
https://tabix.io/doc/Changelog/

Victor
19.04.2018
06:59:31
Добрый день. Поделитесь пожалуйста, как лучше вставлять в CH через Log ?
Я вижу так:
создаем таблицу типа Log
инсертим большую пачку недоочищенных данных
инсертим в MergeTree чрез селект со всякими полезными преобразованиями
дропаем Log таблицу ?
Но если вставка происходит в параллель, то придется на каждого писателя отдельную таблицу создавать ?
MaterializedView никак не поможет ведь дропнуть источник не получится ?

Slava
19.04.2018
08:09:04
мы например делаем буфер в приложении и в MergeTree таблицу пишем сразу
батчами

Egor
19.04.2018
08:10:55
Мммм, а что если просто через кафку прогонять если влом делать батчинг на стороне приложения? Оно будет по скорости работать с той же скоростью что и прилодение?

Wolf
19.04.2018
08:12:51
Смотря какая у вас скорость приложения
Если миллиард вставок в секунду то не будет

Kirill
19.04.2018
08:13:29