
Navern
20.09.2017
12:35:20
и когда я пишу dsn=ClickHouse он лезет за соовтетствующим драйвером
который описан в .odbc.ini
для постгреса
в общем заработало, спасибо. Я скомпилил одбц драйвер яндекса, добавил так как у вас указано и получается делать запросы.

Google

Navern
20.09.2017
12:36:03
ща покажу как выглядит
odbc_fdw тоже пришлось подправить под постгрес 9.6

Павел Максимов
20.09.2017
13:13:47

Oleh
20.09.2017
13:15:07
слишком много \, пишет что ему нужен символ ' перед датой

Tima
20.09.2017
13:15:16
Тут
http://joxi.ru/Q2KGdVKi93D6y2
не должно быть двух слешей

Павел Максимов
20.09.2017
13:17:32

Tima
20.09.2017
13:19:21
У вас в исходных данных похоже что такое экранирование. Т.е. выход - переделать их

Павел Максимов
20.09.2017
13:20:49
такие данные я из logs api яндекса выгружаю. Всем спасибо большое. буду искать решение

Tima
20.09.2017
13:26:53
Попробуйте на данные не питоном посмотреть, может ваш notebook добавляет слеши

Nikita
20.09.2017
13:53:35
Вопрос вроде поднимался, но явсного ответа не нашел. Кому нибудь удавалось из Python по HTTPS отправлять запрос на удаленный сервер CH ? Или возможно даже заставить работать какую нибудь ORM (infi, sqlalchemy) по этому протоколу? На сколькопонял на моей машиневсе упирается в паеты OpenSSL. Не из под убунты 16.04 не из под Win10 настроить коннект не удалось, пишет ошибку:
requests.exceptions.ProxyError: HTTPSConnectionPool(host='xxx.xxx.xxx.xxx', port=9003): Max retries exceeded with url: /?query_id=bf184334-9e0a-11e7-bab7-74d435b3245e&database=default (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 403 Forbidden',)))
Хотя через curl, как описано в доке, спокойно ходит.

Павел Максимов
20.09.2017
13:56:56

Vladimir
20.09.2017
14:38:41
Коллеги, добрый день,
Нашёл незадокументированную фичу Yandex Metrika Logs API - можно скачивать архивы файлов, а значит экономить много времени и трафика.
Для этого необходимо в хедер запроса на выдачу части логов добавить Accept-Encoding:gzip
Пользуйтесь)

Google

Igor
20.09.2017
14:55:56
Можно даже сразу этот gz отправить на вход ch )

Александр
20.09.2017
15:24:04
Я думаю, что не зря недокумментированная фича )
Все таки упаковать все это дело не дешево для проца

Stas
20.09.2017
15:27:16
пытаюсь сделать:
ALTER TABLE test_array MODIFY COLUMN r Nullable(Array(Int64));
и получаю DB::Exception: Cannot parse input: expected [ before: 2826.
изначально r - nullable(string)

papa
20.09.2017
15:33:21
видимо ожидается что строка имеет вид [1,2,3]

Stas
20.09.2017
15:35:04

papa
20.09.2017
15:35:42
toString() от массива возвращает строку в этом формате, обратный разбор ожидает ее же.

Stas
20.09.2017
15:37:50
что то int он мне array не переводит а если в string лежат просто голые значения я ожадаю что бы он мне их сделал все новыми массивами - тоже не хочет
то, что int в array не может грустно конечно =(

Андрей Михайлович
20.09.2017
15:40:39
@SomeoneBehindYou , классная аватарка

s3rj1k
20.09.2017
20:45:14
всем привет, а подскажите можно ли как то скормить json в http api и как правильно это сделать?

Tima
20.09.2017
21:19:08

s3rj1k
20.09.2017
21:20:50

Tima
20.09.2017
21:21:51

s3rj1k
20.09.2017
21:22:30

Tima
20.09.2017
21:50:00
Напишите прокси, например на nodejs, который будет так делать

s3rj1k
20.09.2017
21:53:20
смысл в том что бы не писать прокси)

Konstantin
21.09.2017
05:30:09
подскажите, есть таблица у которой неправильно заполнили поле DATE, переписываю ее в другую таблицу где поле DATE является вычисляемым, есть способы сделать это быстро? сейчас скриптом делается SELECT посуточно и INSERT. на обработку 4 месяцев ушло>20 часов =(

Павел Максимов
21.09.2017
05:49:18

Google

Konstantin
21.09.2017
06:54:27
глупый вопрос: если я знаю количество строк которое должно быть вставлено в таблицу и по SHOW PROCESSLIST вижу, что это количество записано, а до окончания запроса еще 86% можно ли прервать выполнение запроса? =)

Tima
21.09.2017
07:01:48

Павел Максимов
21.09.2017
07:02:13

Vladislav
21.09.2017
08:09:50
Всем привет) Ни у кого не возникает такого, при скане таблицы:
Exception on client:
Code: 32. DB::Exception: Attempt to read after eof:
Code: 210. DB::NetException: Connection refused:
С чем это может быть связано? ALB или всё же CH тоже может такое отдавать.

Cleverfox
21.09.2017
08:35:01
Поделитесь решением
Очевидно он экранировал символы, а там все 8bit safe и экранировать их было не нужно.

Vladimir
21.09.2017
08:47:16
Коллеги, добрый день, подскажите, пожалуйста, есть ли возможность оптимизации запроса.
SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17'
обрабатывает только небольшую часть таблицы
SELECT count() FROM hits WHERE date >= '2017-09-04' AND date <= '2017-09-17' AND domain(url) = 'domain.com'
обрабатывает всю таблицу с начала до конца
Поведение выглядит странным, можно как-то подсказать кликхаусу, что всю таблицу обрабатывать не нужно?

Andrew
21.09.2017
08:48:33

Vladimir
21.09.2017
08:49:15
Индексов нет, тип таблицы -Log

Andrew
21.09.2017
09:17:20
Индексов нет, тип таблицы -Log
Попробуйте движок MergeTree, в движке Log всегда читаются все данные.
https://clickhouse.yandex/docs/ru/single/#mergetree
Положите дату-счетчик в первичный индекс, client_id хорошо подойдет для семплирования (возьмите intHash32),

Vladimir
21.09.2017
09:17:54
Да, уже прочитал про него, сделал вот так MergeTree(date, watch_id, watch_id, 8192) жду когда перельются данные
Да, перестал проходиться по всей таблице, спасибо!

Andrew
21.09.2017
09:21:45
Да, уже прочитал про него, сделал вот так MergeTree(date, watch_id, watch_id, 8192) жду когда перельются данные
с моей колокольни лучше будет работать
MergeTree(date, intHash32(watch_id), (date, counter_id, intHash32(watch_id)), 8192)
в вашей конфигурации он всё равно будет ходить по всей таблице, потому что вы не делаете фильтр по watch_id

Vladimir
21.09.2017
09:24:56
У меня только 1 counter_id, так что решил его не включать, дата, на сколько я понял по документации, тоже всегда в индексе. А зачем нужен intHash32 - я не понял
И судя по моим экспериментам оно так и работает

Andrew
21.09.2017
09:28:35
intHash32 нужен чтобы быть уверенным в равномерном распределении ключей: вдруг idшники будут неслучайными по какой-то причине, или, например, последовательными?
Про дату пусть лучше подскажут знающие, в доке везде советуют дублировать и в дате, и в индексе: но, вероятно, вы правы

Vladimir
21.09.2017
09:30:17
на сколько я понимаю watch_id последователен, тогда, видимо, хэширование для сэмплирования оправдано, но хачем хэшировать в индексе пока не понятно..

Ilyas
21.09.2017
09:30:58
по идее если даты нет в индексе, то при запросах с условием по дате будет фулскан "кусочков", а если дата в индексе есть, то фулскана быть не должно

Google

Vladimir
21.09.2017
09:42:01
Вот смотрите, у меня таблица 100 строк с данными с августа
select count() from hits_new
обработал 100 строк
select count() from hits_new where date > '2017-09-10'
обработал 30 строк
select count() from hits_new where date > '2017-09-10' and domain(url) = 'bla-bla.ru'
обработал 30 строк
При том, что engine=MergeTree(date, watch_id, watch_id, 8192)
Так что видимо независимо от наличия даты в индексе он индексирует таблицу по дате..

Tima
21.09.2017
09:43:49
Поэтому если есть условие на ключ партиции - читается меньше данных

Vladimir
21.09.2017
09:46:01
Спасибо за поправку! А даст ли что-то добавлние даты в индекс?

Ilyas
21.09.2017
09:46:50
Попробуйте запрос чтоб он больше месяца затрагивал и прочитайте в интернетах что такое партицирование :)

Konstantin
21.09.2017
09:48:12
подскажите а когда в MergeTree делаешь запрос с условием например date='2017-09-21', он всегда пробегается по всей партиции за сентябрь?

Andrew
21.09.2017
09:48:25

Tima
21.09.2017
09:48:39

Konstantin
21.09.2017
09:48:55
ENGINE = ReplacingMergeTree(date, (id, timestamp), (id, date, timestamp, resource, platform, userid), 8192)
при запросе по date всегда весь месяц читает

Andrew
21.09.2017
09:49:37
ENGINE = ReplacingMergeTree(date, (id, timestamp), (id, date, timestamp, resource, platform, userid), 8192)
если вы не фильтруете по id то всегда пробегается по всей партиции. Если вы указываете фильтр на дату и на id, то будет пробегаться только по тому, что вы хотите

Konstantin
21.09.2017
09:50:13
понятно, спасибо

Vladislav
21.09.2017
09:50:24
Добрый день :) Никто не сталкивался с большим потреблением памяти на Alter Table (Add column)? У нас после него CH съел всё доступную память и отказывается отдавать :(

Konstantin
21.09.2017
10:14:40

Vladislav
21.09.2017
10:15:10
Ничего
Процессов выполняющихся нет

Konstantin
21.09.2017
10:16:45
лог?

Google

Andrew
21.09.2017
10:22:28

Konstantin
21.09.2017
10:22:55
просто количество итераций очень большое

Andrew
21.09.2017
10:23:04
условный INSERT INTO copy AS SELECT * FROM table не требует хранения всего в оперативке.

Konstantin
21.09.2017
10:23:11
я получается вставляю 30 дней по одному и каждая вставка читает всю партицию

Vladislav
21.09.2017
10:26:06
лог?
В логе криминала тоже никакого. 3.9гб потрачено на запрос и всё.
В принципе CH с OOM не падает, но не понятно, почему процесс не отдаёт память, если её не использует

Tima
21.09.2017
10:28:44

Vladislav
21.09.2017
10:30:03
А это что-то аффектило у вас?

Tima
21.09.2017
10:31:13
Вроде нет, но когда CH без нагрузки отожрал 40% памяти (примерно 30Гб) и не отдает - подозрително

Paul
21.09.2017
10:35:26
коллеги, дурацкий вопрос: есть таблица, в ней есть ключ. Что будет, если в таблицу вставить строку, у которой ключ совпадет с уже существущей? Она перезапишется? Движок MergeTree

Александр
21.09.2017
10:37:27
Нет, не перезапишется. По крайней мере у меня данные дублируются

Vladislav
21.09.2017
10:39:34

Max
21.09.2017
11:07:43
привет. а подскажите, у меня есть gziped tsv я могу его как то лить напрямую? или нужно распаковывать?

Paul
21.09.2017
11:09:57
можно через zcat как минимум
он на лету распаковывает

Вася
21.09.2017
11:27:49