
Alexey
18.09.2017
15:23:51
Функция позволяет преобразовать Nullable значение в не Nullable. Работает следующим образом: если значение не NULL, то возвращает его. Если значение NULL, то возвращает некоторый не специфицированный результат.

Stas
18.09.2017
15:38:50

Alexey
18.09.2017
15:40:32
Попробуйте toInt64OrZero от Nullable строки. Эта функция должна вернуть NULL, если аргумент NULL (и ноль, если аргумент не NULL, но не парсится как число).

Stas
18.09.2017
15:44:18

Google

Stas
18.09.2017
15:45:37
так я получаю: DB::Exception: Illegal type Int64 of argument of function toInt64OrZero. Only String argument is accepted for try-conversion function. For other arguments, use function without 'try'.

Alexey
18.09.2017
15:47:51
Сейчас все агрегатные функции возвращают не NULL, агрегируя только не NULL-значения.

Stas
18.09.2017
15:51:16
это я уже понял, но в рамках полной поддержки NULL - это не планируется? к великому сожелнию вынужден работать с такой структурой данных =(

Alexey
18.09.2017
15:54:58
Можно какой-нибудь комбинатор реализовать. Например, -OrNull: sumOrNull и т. п.

Stas
18.09.2017
15:56:48
вот это было бы очень круто тк статистика которую я обрабатываю часто имеет NULL значения а конечный KPI имеет смысл только если все счетчики включенные в расчет не имеют NULL в заданном промежутке времени

Alexey
18.09.2017
17:05:03
Маленькая просьба.
https://news.ycombinator.com/newest
Надо на этой странице найти нашу статью "Evolution of Data Structures in Yandex.Metrica" и нажать слева треугольник "вверх".
Перед этим придётся зарегистрироваться. Но не стоит беспокоиться - на этом сайта самая лучшая регистрация из всех, что я видел :)

Александр
18.09.2017
17:06:31

Roman
18.09.2017
17:07:12
To the moon ?

Vsevolod
18.09.2017
17:11:52
там, кстати, довольно суровая защита от накруток, в том числе и от накруток через чатики :)


Vladislav
18.09.2017
19:02:11
подскажите, пожалуйста, что может быть не так: есть распределенная таблица
CREATE TABLE postgres.user_subscribes_new ( site String, ctime DateTime DEFAULT now(), blog_id UInt32, post_id Nullable(UInt32), user_id UInt64, event UInt8, chour DateTime MATERIALIZED toStartOfHour(ctime), cdate Date MATERIALIZED toDate(ctime)) ENGINE = Distributed(sports, \'local\', \'user_subscribes_new\', blog_id)
есть локальные таблицы на 6 шардах (3x2):
CREATE TABLE local.user_subscribes_new ( site String, ctime DateTime DEFAULT now(), blog_id UInt32, post_id Nullable(UInt32), user_id UInt64, event UInt8, chour DateTime DEFAULT toStartOfHour(ctime), cdate Date DEFAULT toDate(ctime)) ENGINE = ReplicatedMergeTree(\'/clickhouse/tables/{shard}/subscribes\', \'{replica}\', cdate, (site, blog_id, event, chour, cdate), 8192)
вставляю в рапсределенную три раза:
INSERT INTO postgres.user_subscribes_new( site, blog_id, user_id, event, ctime, post_id ) VALUES ('RU', 43590, 23607725, 1, 1, 1406479)
в таблице видна только одна запись, независимо от того, соклько было инсертов. куда посмотреть?


Oleg
18.09.2017
19:03:52
это случаем не "дедупликация данных"?
Блоки данных дедуплицируются. При многократной записи одного и того же блока данных (блоков данных одинакового размера, содержащих одни и те же строчки в одном и том же порядке), блок будет записан только один раз. Это сделано для того, чтобы в случае сбоя в сети, когда клиентское приложение не может понять, были ли данные записаны в БД, можно было просто повторить запрос INSERT. При этом не имеет значения, на какую реплику будут отправлены INSERT-ы с одинаковыми данными. То есть, обеспечивается идемпотентность INSERT-ов. Это работает только для последних 100 вставленных в таблицу блоков.

Vladislav
18.09.2017
19:05:36
блин, дедупликация, точно. я дошел к этому от другой проблемы, а про дедупликацию в mergetree забыл совершенно

Google

Oleg
18.09.2017
19:05:37
это имею ввиду

Vladislav
18.09.2017
19:06:00
ага, понял. спасибо, вылетело из головы.
сейчас осталось понять, решил ли я изначальную проблему )

Marat
18.09.2017
19:23:23
Господа привет!
меня интересует то, как вставлять rowdata?
вернее как их представлять. в документации это не сказано.

Konstantin
18.09.2017
19:29:29

Marat
18.09.2017
19:30:51
сейчас я тестирую, поэтому допустим
json бы выглядел так
{"date": "01-02-2017", "name": "Marat}

Konstantin
18.09.2017
19:33:34

Marat
18.09.2017
19:35:10
конечно так подойдет, просто мне интересна именно работа с бинарными данными. Т.к. хочу попробовать сделать все из эрланга, а он с бинарными данными отлично работает
Для меня это ПОКА вопрос любопытства, и если я не получу ответ на него, ничего критического не произойдет;)

Maksim
18.09.2017
19:55:40

Рулон
19.09.2017
06:03:45
Господа ) Что-то мы давно не собирались)

Kirill
19.09.2017
06:10:38
Думаю, можем на Кипре место предоставить, если вдруг кому интересно )

Vladimir
19.09.2017
06:36:35

Cleverfox
19.09.2017
06:57:46
Всем доброго врменеи суток. Подскажите, как вставить в поле NULL, желательно в TabSeparated или RowBinary формате. В доке не нашёл.

f1yegor
19.09.2017
07:27:05

Mike
19.09.2017
07:33:06

f1yegor
19.09.2017
07:51:31
done

Vladislav
19.09.2017
07:54:32

Dmitry
19.09.2017
10:07:55
подскажите, кто как бекапит кх

Google

Dmitry
19.09.2017
10:07:59
нашел вот такое
https://github.com/resure/scpnet/wiki/ClickHouse-backup
есть какое-то более цельное решение?

Andrew
19.09.2017
10:08:37

Vitaliy
19.09.2017
10:32:28


Виктор
19.09.2017
10:52:28
ребят кто-нибудь сталкивался с тем что после перезапуска кликхауса он не отвечает ни на какие запросы и подключения, а в логах пишет что удаляет что-то постоянно
2017.09.19 13:51:01.567860 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428120_3428120_0
2017.09.19 13:51:01.573137 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428121_3428121_0
2017.09.19 13:51:01.574949 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428122_3428122_0
2017.09.19 13:51:01.576726 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428123_3428123_0
2017.09.19 13:51:01.578542 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428124_3428124_0
2017.09.19 13:51:01.580526 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428125_3428125_0
2017.09.19 13:51:01.582195 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428126_3428126_0
2017.09.19 13:51:01.583956 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428127_3428127_0
2017.09.19 13:51:01.585541 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428128_3428128_0
2017.09.19 13:51:01.587274 [ 3 ] <Debug> ads.main_data (Data): Removing part 20170919_20170919_3428129_3428129_0
Как-то так в логах
Просто даже не знаю что делать


Tima
19.09.2017
10:55:36


Виктор
19.09.2017
10:56:27
Ну у нас одна большая таблица и где-то 6 мелких. Т.е. немного не та ситуация. единственное что перед перезапуском был дроп большой базы. Может быть в этом проблема?
Оно просто чистит перед запуском?

Tima
19.09.2017
11:00:03

Виктор
19.09.2017
11:00:17
Спасибо боьлшое :)

Pavel
19.09.2017
11:33:52
Всем привет! А есть ли либы для CH, которые могут общаться с сервером по https искаропки?
попробовал либу от mail.ru - не хочет https ?

Vladislav
19.09.2017
11:40:22
а что за либа от mail.ru?
и для какого она языка?

Pavel
19.09.2017
11:41:26
ой, Go =)
https://github.com/mailru/go-clickhouse
вот эта

Google

Pavel
19.09.2017
11:42:10
сейчас мучаю https://github.com/roistat/go-clickhouse вроде https появился в ней

Slach
19.09.2017
11:45:36
есть два протокола http и native
https это только если перед clickhouse стоит nginx

Pavel
19.09.2017
11:46:04
именно так и стоит по соображениям безопасности
roistat вроде https умеет, сейчас попробую подсунуть нужные хидеры авторизации OAUTH

Alex
19.09.2017
11:46:58
> https это только если перед clickhouse стоит nginx
Необязательно - см. настройку https_port в конфиге.

Slach
19.09.2017
11:58:36

Павел Максимов
19.09.2017
12:09:02

Paul
19.09.2017
12:09:57
ну вот я бы попытался сначала уменьшить размер вставки
у вас, похоже, питон падает. Не кликхауз

Павел Максимов
19.09.2017
12:12:05
ладно, попробую поменьше кусками, спасибо

Roman
19.09.2017
12:14:45
Ребят, чет туплю, подскажите пожалуйста есть ли способ через jdbc используя RowBinaryStream инсертить null значения?

Igor
19.09.2017
12:16:55
if (string == null) {
stream.writeInt8(1);
} else {
stream.writeInt8(0);
stream.writeString(string);
}

Andrew
19.09.2017
12:17:04
судя по трейсу вы делаете копию данных, храните в памяти две копии одних и тех же данных. Да, стоит уменьшить на порядки размер файлов, либо загружать через clickhouse-client. Из привычного вам Jupyter это можно сделать через ! в начале ячейки

Roman
19.09.2017
12:19:01

Ilya
19.09.2017
12:19:21
А что в логах кликхауса?

Павел Максимов
19.09.2017
12:19:31

Pavel
19.09.2017
12:24:50
угу, roistat заработал как требуется

Vsevolod
19.09.2017
12:25:25
Добрый день!
Скажите пожалуйста, в чем может быть причина в том, что не происходит заполнение материализированного представления? В docker версии происходит, в нативной установке под ubuntu 16.04 не происходит. Версия 1.1.54284 и там и там, схема одна и та же. Данные схожие. Запрос из которого формируется представление выдает схожие данные как и в MV в docker, а в нативной установке расходятся. Какие логи отвечают за это?
Вижу только, что в докер версии происходит мерж частей в MV, а в нативном нет.

Vitaliy
19.09.2017
12:32:21
Что скажете на счет этого поделия http://www.proxysql.com/blog/proxysql-143-clickhouse ?

Vitaliy
19.09.2017
12:32:28

Google

Виктор
19.09.2017
12:32:46
Понял, спасибо :)

Pavel
19.09.2017
12:36:14
In today's release, ProxySQL 1.4.3, the most important feature is surely the support for ClickHouse as a backend!
Clients can still connect to ProxySQL using the MySQL Protocol, and ProxySQL will query ClickHouse.
Nice idea!
итого, roistat единственные кто сумел подключиться по https без проблем =)

Cleverfox
19.09.2017
13:31:36

Pavel
19.09.2017
13:38:14
ну другим плагинам указываешь, а им не нравится "https" как протокол
вот вся и проблема


Vsevolod
19.09.2017
13:53:54
Добрый день!
Скажите пожалуйста, в чем может быть причина в том, что не происходит заполнение материализированного представления? В docker версии происходит, в нативной установке под ubuntu 16.04 не происходит. Версия 1.1.54284 и там и там, схема одна и та же. Данные схожие. Запрос из которого формируется представление выдает схожие данные как и в MV в docker, а в нативной установке расходятся. Какие логи отвечают за это?
Вижу только, что в докер версии происходит мерж частей в MV, а в нативном нет.
Нашел интересное поведение КХ.
Если формировать из запроса содержащий JOIN, то нельзя указывать в качестве таблиц данных запросы, даже если они требуются только для алиасов. Иначе не обновляется. В таблицах есть схожие колонки, поэтому из за использования алиасов не происходила "подписка" на изменения в таблице А. А данные приходили в таблицу А позже, чем в таблицу Б, из-за этого данные в MV и не объединялись.
Нам повезло, что есть возможность "подписаться" на 2 таблицы сразу же, однако из за отсутствия алиасов в join, можно также наткнуться на эту проблему.


Oleh
19.09.2017
14:09:03
Добрый день, подскажите, в чем может быть проблема
clickhouse error: [242] DB::Exception: Table is in readonly mode" query":{"Stmt":"INSERT INTO statistics.daily_statistics_events

Symstriker
19.09.2017
14:10:39
Ну собсно там понятно в чем проблема. Вопрос в том какой барашек ридонли поставил

Oleh
19.09.2017
14:11:35
можно как-то убрать ридонли?
у меня на слейве повторяется такая ошибки 2017.09.19 14:16:33.699771 [ 9 ] <Error> ReshardingWorker: no node, path: /clickhouse/task_queue/resharding/localhost.localdomain
на слейве повис кликхаус, я его перегрузил, вроде бы отпустило

Anton
19.09.2017
16:33:47
В PG есть запрос:
select array(select id from table)
Как сделать аналогичное?

Ksu
19.09.2017
16:35:37
Добрый вечер
кто-нибудь в курсе, можно ли выделять определенное кол-во ядер на запрос?