@clickhouse_ru

Страница 652 из 723
Michal
11.09.2018
08:28:05
Всем привет, какой способ загрузки данных в ClickHouse самый быстрый? Какой формат использовать при вставке? Может быть использовать какой-нибудь clickhouse-driver?
Все вполне быстрые. ИМХО оптимальный вариант - это TSV + clickhouse-client. clickhouse-client парсит, переводит формат в Native и сжимает данные перед передачей на сервер. Вряд ли вы сможете написать это быстрее.

Mike
11.09.2018
08:28:20
Дата ж вроде числом хранится, можно число вычитать

Google
Igor
11.09.2018
08:29:12


Я же говорил, сам bigquery не воспринимает нормально...

Michal
11.09.2018
08:29:57
Вы тут про bigquery спрашиваете или про кликхаус? :)

Igor
11.09.2018
08:32:00
bigquery

Ivan
11.09.2018
08:34:51
bigquery
Тогда стоит найти для этого вопроса более релевантный чатик

Michal
11.09.2018
08:58:53
Добрый день. Подскажите с такой задачей: Есть столбцы уникальный id клиента, дата и время посещения, нужно присвоить каждому уникальному id свой номерной порядок от первого до последнего посещения.
Например так: with groupArray( tuple(timestamp, col1,col2) ) as per_user_rows, arraySort( row -> row.1, per_user_rows) as per_user_rows_sorted_by_ts, arrayEnumerate(per_user_rows_sorted_by_ts) as indexes, arrayMap( (row, index) -> tuple( index, row.1, row.2, row.3 ), per_user_rows_sorted_by_ts, indexes) as per_user_rows_sorted_by_ts_with_indexes, arrayJoin( per_user_rows_sorted_by_ts_with_indexes ) as final_row, final_row.1 as row_index_final, final_row.2 as timestamp_final, final_row.3 as col1_final, final_row.4 as col2_final select userid, row_index_final, timestamp_final, col1_final, col2_final from table_1123 group by userid или так (простая "сквозная" нумерация) select *, rowNumberInAllBlocks() from ( select * from table_1123 order by userid, timestamp);

I
11.09.2018
09:02:24
А может кто-нибудь скинуть пример конфига словаря и внешний файл с источником данных?
Все ещё актуально, если вдруг у кого пример есть. Не оч понятно, как хранить сам словарь в том же файле (csv например)

I
11.09.2018
09:30:24
В документации есть https://clickhouse.yandex/docs/ru/single/#dicts-external_dicts
Есть именно примеры конфигурации. Мне не оч понятно, как хранить словарь в файле (csv например)

Konstantin
11.09.2018
09:36:04
Есть именно примеры конфигурации. Мне не оч понятно, как хранить словарь в файле (csv например)
вот пример настройки: https://clickhouse.yandex/docs/ru/single/#dicts-external_dicts_dict_sources-local_file а если по структуре файла, то мне не понятно, что вам не понятно) указываете например <format>CSVWithNames</> следовательно файл должен иметь вид типа: Колонка1,Колонка2, ... ,КолонкаN Данные1,Данные2, ... ,ДанныеN

I
11.09.2018
09:37:33
Т.е. строки между собой разделяются \n?

Google
I
11.09.2018
09:41:30
Понял, т.е. \n. Спасибо!

Dmitry
11.09.2018
09:46:16
Добрый день! Коллеги, при отправке запроса через jdbc периодически вылетает ошибка "Read timed out". Подскажите, какой настройкой регулируется этот таймаут?

Evgeny
11.09.2018
09:50:54
connection_timeout, socket_timeout

Dmitry
11.09.2018
09:55:33
Спасибо Есть http_connection_timeout со значением 1. Она устанавливается в минутах? А настройки socket_timeout вообще нет в результате запроса к system.settings

Artur
11.09.2018
09:56:26
Какие кто использует способы для изменения формата даты при выгрузке, например, в тот же csv. Например, если надо вывести дату в файл в формате DD.MM.YYYY HH24:MI:SS
Так не годится: select substring(toString(dt, 'UTC'), 9, 2) || '.' || substring(toString(dt, 'UTC'), 6, 2) || '.' || substring(toString(dt, 'UTC'), 1, 4) || substring(toString(dt, 'UTC'), 11, 9) as dt_str from t limit 10 ; ?

Вольдемар
11.09.2018
09:58:46
Так не годится: select substring(toString(dt, 'UTC'), 9, 2) || '.' || substring(toString(dt, 'UTC'), 6, 2) || '.' || substring(toString(dt, 'UTC'), 1, 4) || substring(toString(dt, 'UTC'), 11, 9) as dt_str from t limit 10 ; ?
Ну, вполне. Думал, может есть какие-то более очевидные способы подобного форматирования?

Mike
11.09.2018
10:02:20
Коллеги, а не подскажите, нет ли возможности встроенными функциями КХ из unix timestamp в hex получить datetime ? танцы с unhex что-то не принесли успеха

Konstantin
11.09.2018
10:04:38
Ну, вполне. Думал, может есть какие-то более очевидные способы подобного форматирования?
ну можно использовать concat и toDayOfMonth, toMonth, toYear, toHour, toMinute, toSecond)

Mike
11.09.2018
10:06:44
А можно пример исходных данных?
5B9589D3 к примеру (September 10, 2018 12:00:03 AM GMT+03:00)

Вольдемар
11.09.2018
10:06:49
ну можно использовать concat и toDayOfMonth, toMonth, toYear, toHour, toMinute, toSecond)
В случае, например, с 8 часами утра в tohour мы получим 8 вместо желаемых 08. Возможный, но не самый удобный вариант

Alex
11.09.2018
10:09:05
5B9589D3 к примеру (September 10, 2018 12:00:03 AM GMT+03:00)
SELECT toDateTime(reinterpretAsUInt32(reverse(unhex('5B9589D3')))) ┌─toDateTime(reinterpretAsUInt32(reverse(unhex('5B9589D3'))))─┐ │ 2018-09-10 00:00:03 │ └─────────────────────────────────────────────────────────────┘

reverse нужен из-за little endian

Mike
11.09.2018
10:09:32
reverse нужен из-за little endian
Спасибо! Вот это я пропустил :)

Андрей
11.09.2018
10:13:46
А поделитесь опытом, имеется postgresql и кластер на CH, как лучше организовать процесс передачи изменений в CH?(речь только про данные) Вариант переносить все с помощью csv не очень радует...

Slava
11.09.2018
10:20:42
А поделитесь опытом, имеется postgresql и кластер на CH, как лучше организовать процесс передачи изменений в CH?(речь только про данные) Вариант переносить все с помощью csv не очень радует...
зависит от схемы изменения данных, например, если данные по юзерам изменяются инкрментно, то можно сделать ReplacingMergeTree и туда лить данные

clickhouse удалит все строки, кроме последней по ключу

это такой конкретный кейс, под конкретную задачу, может быть у вас по-другому

Konstantin
11.09.2018
10:21:52
В случае, например, с 8 часами утра в tohour мы получим 8 вместо желаемых 08. Возможный, но не самый удобный вариант
SELECT now(), replaceRegexpAll(toString(now()), '([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})', '\\3.\\2.\\1 \\4:\\5\\:\\6') AS res ┌───────────────now()─┬─res─────────────────┐ │ 2018-09-11 10:21:27 │ 11.09.2018 10:21:27 │ └─────────────────────┴─────────────────────┘

Google
Yuriy
11.09.2018
10:24:41
еще можно toHour перевести в строку, потом скормить его в appendTrailingCharIfAbsent(x, '0'), а потом сделать reverse

Yuriy
11.09.2018
10:24:56
будет 8 превращет в "08"!

Slava
11.09.2018
10:25:35
Вольдемар
11.09.2018
10:25:39
Konstantin
11.09.2018
10:26:11
Да, тоже вариант. Но вариант идти через replaceRegexpAll не отрабатывает у нас через консольный clickhouse-client - все равно выводится время в изначальном формате базы
ubuntu@clickhouse-1:~$ clickhouse-client --query=" SELECT now(), replaceRegexpAll(toString(now()), '([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})', '\\\3\.\\\2\.\\\1 \\\4:\\\5:\\\6') AS res" 2018-09-11 10:27:03 11.09.2018 10:27:03 чуть больше экранирования и все заработает =)

Vladislav
11.09.2018
10:28:37
Подскажите пожалуйста, появляются ли какие-нибудь подводные камни при более частом использовании вертикального мерджа (при уменьшении значения vertical_merge_algorithm_min_rows_to_activate)? Директива помогла избавиться от падений от оом киллера при небольшом кол-ве памяти (32гб), хотелось бы знать чем это аукнется.

Tima
11.09.2018
10:45:24
Есть новости, когда ближайший релиз?

Wolf
11.09.2018
10:46:27
да релизы буквально один за другим идут , к чему вопрос то ?

antuan
11.09.2018
10:57:21
Кстати последний ченжлог - огонь

Tima
11.09.2018
11:02:02
Alex
11.09.2018
11:04:28
Вчера был

Tima
11.09.2018
11:36:26
Вчера был
Спасибо, пропустил. Ченжлог и вправду огонь!

Вчера был
Его в репе нет?

Paul
11.09.2018
11:52:58
Mike
11.09.2018
11:53:53
А где ченжлог можно глянуть?

Tima
11.09.2018
11:54:11
А где ченжлог можно глянуть?
https://github.com/yandex/ClickHouse/blob/master/CHANGELOG_RU.md

Google
Vladimir
11.09.2018
11:57:38
Я в генте бампаю пакеты только на -stable, например

Wolf
11.09.2018
11:57:47
ну разница к сожалению не велика

Vladimir
11.09.2018
11:58:24
ну разница к сожалению не велика
Ну для меня большая :) тестинг чаще, если я буду каждый раз делать бамп, это будет full time job для меня

Wolf
11.09.2018
11:58:48
ну давно пора автоматизировать

Vladimir
11.09.2018
12:00:29
ну давно пора автоматизировать
Фигово автоматизируется :)

Egor
11.09.2018
12:21:01
подскажите пожалуйста, а зачем в примере в документации про MergeTree (https://clickhouse.yandex/docs/ru/operations/table_engines/mergetree/#_4) при создании таблицы с партиционированием по месяцам в индекс добавляется поле с датой? только чтобы отсоритровать по дням? партиционирование же будет эффективно работать при запросах с условиями по дате и без включения полей с датой в индекс?

Андрэ
11.09.2018
12:23:02
Парни, помогите пожалуйста) Если в zookeeper для некой таблицы была удалена нода (если правильно выражаюсь) log - что можно сделать, чтобы кликхаус запустился создав эту ноду? О потерянных данных речь не идет тут

Alex
11.09.2018
12:26:28
Андрэ
11.09.2018
12:27:16
У меня сервер не запускается, говорит No node, path: /clickhouse/tables/1-1/balance/log

Wolf
11.09.2018
12:27:43
ну надо создать этот путь руками в зукипере

Андрэ
11.09.2018
12:27:48
но я сейчас еще раз изучу доку

просто create /path/? вроде бы у меня не получилось

я с зукипером прям на Вы(

Alex
11.09.2018
12:29:05
Slava
11.09.2018
12:30:07
добрый день, скажите, пожалуйста, когда появится в репе версия 18.12.13?

Alex
11.09.2018
12:30:11
В вашем случае надо будет сохранить куски с данными, пересоздать таблицу и добавить сохранённые куски с помощью ATTACH PARTITION.

добрый день, скажите, пожалуйста, когда появится в репе версия 18.12.13?
Когда дотестируем (сегодня-завтра, или обнаружатся проблемы и будет ещё один релиз)

Google
Андрэ
11.09.2018
13:01:01
В вашем случае надо будет сохранить куски с данными, пересоздать таблицу и добавить сохранённые куски с помощью ATTACH PARTITION.
да, кажется я разобрался. Спасибо. Я правильно понимаю, что inactive_20180901_20180911_0_413185_63240 в detached - значит, что я эти parts уже приаттачил?

я про inactive

Alex
11.09.2018
13:05:58
Да, если кусок inactive - значит был ATTACH PARTITION, и этот кусок был покрыт другим куском, который тоже был в detached. В этом случае покрывающий кусок аттачится к таблице, а покрытый кусок переименовывается в inactive_, чтобы при повторных ATTACH не было дублирования данных.

Evgeny
11.09.2018
13:18:30
Поставил КХ 18.12.13. Отвалились odbc: [unixODBC][Driver Manager]Can't open lib '' file not found

либа точно есть

откатываю на 18.5.1

Igor
11.09.2018
13:38:31
Есть таблица формата: ИД ДЕЙСТВИЕ 1 А 1 Б 1 А 2 А ... ... Так вот, мне надо отобрать только те ИД, которые выполнили действие А, но ни разу не выполняли действие Б. Если можно на standart SQL. Заранее спасибо.

papa
11.09.2018
13:42:33
а как вы делали что у вас не получилось?

Igor
11.09.2018
13:43:52
Пробовал через GROUP BY, не знаю ка правильно оформить запрос.

Maxim
11.09.2018
13:46:03
Select id, sum(a), sum(b) from (Select id, if(action=A, 1, 0) as a, if(action=B, 1, 0) b) group by id having sum(a) > 0 and sum(b) < 1;

Типа такого

Не уверен, правда, что самый эффективный способ.

Artur
11.09.2018
14:05:46
Есть таблица формата: ИД ДЕЙСТВИЕ 1 А 1 Б 1 А 2 А ... ... Так вот, мне надо отобрать только те ИД, которые выполнили действие А, но ни разу не выполняли действие Б. Если можно на standart SQL. Заранее спасибо.
select id from ( select distinct id from ( select 1 as id, 'А' as action union all select 1 as id, 'Б' as action union all select 1 as id, 'А' as action union all select 1 as id, 'А' as action union all select 2 as id, 'А' as action ) as t where action = 'А' ) any left join ( select distinct id, id as is_find from ( select 1 as id, 'А' as action union all select 1 as id, 'Б' as action union all select 1 as id, 'А' as action union all select 1 as id, 'А' as action union all select 2 as id, 'А' as action ) as t where action = 'Б' ) using (id) where is_find = 0 ; — предложу такой вариант

Konstantin
11.09.2018
14:09:56


prll
11.09.2018
14:11:15
нет, в отдельный конфиг словаря

который должен ледать в директории которая прописана в config.xml как <dictionaries_config>

GithubReleases
11.09.2018
14:19:32
yandex/ClickHouse was tagged: v18.12.13-stable Link: https://github.com/yandex/ClickHouse/releases/tag/v18.12.13-stable Release notes: v18.12.13-stable

Tima
11.09.2018
14:58:57


Запросы вроде работают

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