
Igor
16.12.2016
06:47:40
Можно вставлять с вызовом функции UUIDStringToNum, но вроде, бы только в формате Values.
echo "('2016-12-16', UUIDStringToNum('1a06aed6-fe8b-410d-a0ca-99baae516a73'))" | curl "http://127.0.0.1:8123/?query=INSERT+INTO+test_uuid_fill+(date,+uuid)+FORMAT+Values" --data-binary @-
типа того

Arkady
16.12.2016
07:07:55

Igor
16.12.2016
07:14:54
Хм, не знаю, лучше пусть кто-нибудь из Я подтвердит)
Я где-то видел, что просили что-то подобное, но нашел только такие тикеты:
https://github.com/yandex/ClickHouse/issues/67
https://github.com/yandex/ClickHouse/issues/75
а они вроде немного не про то

Google

Igor
16.12.2016
07:18:47
Кстати, вот было бы клёво иметь возможность написать что-то вроде такого:
CREATE TABLE ... (
uuid FixedString(16) DEFAULT UUIDStringToNum(uuid)
)
Чтобы это выражение отрабатывало только один раз, при INSERT'е, и не ругалось на cyclic aliases. Но это неочевидно было бы, наверное, и/или труднореализуемо нормально.

Igor
16.12.2016
09:22:47
Выглядит так что действительно никак, но можно попробовать придумать
Да интересная задачка, что правильнее в нашем контексте 2*2=5 или 2*2=4.7 )
На наших данных ближе всего к final такое :
round(medianIf(value,sign>0)) AS val_sign_median
Интересно что если делается GROUP BY toStartOfFiveMinute(event_time), то без FINAL,
т/е данные группируются "расхлопнутыми", среднее лучше/ближе через avgIf(value,sign>0) чем sum(value * sign)/ sum(sign)
Или мы где-то "закривили" руки себе ))

Alexey
16.12.2016
10:02:43

Roman
17.12.2016
10:45:11
Товарищ пердлагает 50К рублей за ODBC драйвер для КХ http://www.sql.ru/forum/1243052/perepisat-drayver-odbc-na-windows-50-000r

Alexander
17.12.2016
10:52:16
Если это тот, о ком я думаю, то драйвером дело не ограничится )

Igor
17.12.2016
10:52:18
гениально!

Виктор
17.12.2016
11:07:11
Это тот кто спрашивал на митапе "хочу продавать clickhouse за деньги"? =)

Igor
17.12.2016
11:08:01
только начал не с 5-10 млн, а поскромнее

Виктор
17.12.2016
11:08:25
А, наоборот, он покупает

Roman
17.12.2016
11:11:39
Виктор, а планируется опубликовать рейтинг фич реквестов?
Вспомнил, вы говорили про открытие вашего внутреннего багтрекера по КХ наружу, я правильно помню?

Google

Виктор
17.12.2016
11:15:23
Да, планируется
И то и то
Пока не успеваем

Roman
17.12.2016
11:21:24
Да, планируется
Круто. Будет виден интерес сообщества к разным фичам и на всякие побочные штуки (которые не в "ядре") можно будет кикстартер устраивать :) Типа как "50К за ODBC" :)

Igor
17.12.2016
20:23:09
reset?
http://unix.stackexchange.com/questions/79684/fix-terminal-after-displaying-a-binary-file

Darafei
17.12.2016
20:23:28
stty sane
или reset

?Zloool?
17.12.2016
20:25:27
Спасио

Юрий
17.12.2016
20:51:58
КХ умеет аггрегировать вычисляемые значения по дате?
типа
GROUP BY toYear(event_date)

?Zloool?
17.12.2016
20:52:41
Я так понимаю бинарные данные лучше в стринг не засовывать?

Igor
17.12.2016
20:57:44

Юрий
17.12.2016
21:00:05
Пытаюсь сделать так
select
toYear(event_date) as y,
toMonth(event_date) as m,
count() as total
from tbl
where
user_id=29
group by toMonth(event_date)
получаю
Code: 215, e.displayText() = DB::Exception: Column event_date is not under aggregate function and not in GROUP BY., e.what() = DB::Exception

Igor
17.12.2016
21:00:31
y в GROUP BY указать забыли )
GROUP BY y, m - можно так

Юрий
17.12.2016
21:01:16
точно. спасибо)

?Zloool?
17.12.2016
21:01:45

Igor
17.12.2016
21:02:58
вроде бы TabSeparated и CSV по-максимуму все экранируют, но я точно не помню

Google

Igor
17.12.2016
21:04:03
JSON/JSONCompact еще
а, нет, TabSeparated только при парсинге экранирует \x00 всякие

?Zloool?
17.12.2016
21:06:59
Его и использую в веб морде приложения, но хочется посмотреть из базы данные в консоли
JSON/JSONCompact еще

Igor
17.12.2016
21:08:16
ну, можно JSONEachRow, он компактнее, но читабельность страдает, конечно
но больше ничего вроде бы нету, может скрытые функции какие-то или в функциях для работы с json че-нить есть

?Zloool?
17.12.2016
21:09:32
Спасибо, буду думать

Igor
17.12.2016
21:11:43
hex() совсем не подходит?(

?Zloool?
17.12.2016
21:12:08
Сейчас попробую
Отлично, с ним хотя бы не крешиться

Igor
17.12.2016
21:14:27
можно еще в lower() обернуть, если lowercase больше нравится, и с помощью substring обрезать, чтоб в табличку помещался (это если не нужны все данные, конечно)

Maksim
17.12.2016
21:39:14
простите за невнимательность, но вот свежеобновил кликхаус, а UUIDNumToString вроде как ещё нет. Или не там смотрел?
SELECT UUIDNumToString(server_id),count() FROM retroview_production.sessions group by server_id FORMAT Pretty
Code: 46, e.displayText() = DB::Exception: Unknown function UUIDNumToString, e.what() = DB::Exception

Igor
17.12.2016
21:39:42
сервер тоже обновили же?
одного клиента недостаточно, если что)
у меня сейчас в 1.1.54121 есть, и в 1.1.54112 (или 54113) было вроде
SELECT version() что показывает?

Maksim
17.12.2016
21:41:32
1.1.54112
буду обновлять

Google

Maksim
17.12.2016
21:44:09
а, но это последняя версия в репозитории. Видимо вы из исходников ставили?

Igor
17.12.2016
21:44:16
вообще, они могли не дойти еще до стабильной версии
документация из master'а (нестабильной ветки) отображается сразу на clickhouse.yandex)

Maksim
17.12.2016
21:44:54
ага

Igor
17.12.2016
21:48:42
завел тикет на всякий случай, https://github.com/yandex/ClickHouse/issues/270

?Zloool?
17.12.2016
21:49:46

Igor
17.12.2016
21:50:33
чистую - в смысле?
не бинарную типа?
ну хз, смотрите сами, что важнее, читабельность или экономия ресурсов
я для сравнения загрузил пару месяцев данных в разные таблицы - с fixedstring(16) и string (в которой были 36-символьные уиды)
uuidы использовались в основном в качестве ключа для джойнов между разными таблицами
fixedstring(16) оказался в среднем в два раза шустрее, чем обычная строка.
и отображать ее (в моем случае), в принципе, редко надо, только если при разборе полетов

Maksim
17.12.2016
21:58:49
сейчас это так:
replaceRegexpOne(lower(hex(server_id)),'(.{8})(.{4})(.{4})(.{4})(.{12})','\\\\1-\\\\2-\\\\3-\\\\4-\\\\5') as server_id
и toFixedString(unhex(replaceAll(" ++ ServerId ++ ",'-','')),16) AS server_id

Igor
17.12.2016
21:59:32
гыгыгы, да
особенно когда столбцов с уидами несколько, выглядит эпично

Maksim
17.12.2016
22:02:09
больше добивает обожаемое мультиэкранирование

Igor
17.12.2016
22:02:57
хм, а мне двух бекслешей достаточно было
ну да, зависит от языка/формата, неважно

Maksim
17.12.2016
22:03:44
ага

mio
17.12.2016
23:40:26
Всем привет. Можно ли с++ драйвер для Cassandra положить в contrib? В рамках фичи словари в Cassandra.

f1yegor
18.12.2016
00:13:56
А где описание фичи?

Google

f1yegor
18.12.2016
00:14:05
Интересно

mio
18.12.2016
01:00:46
описание в названии - возможность подгружаться словари из кластера Cassandra

Alexey
18.12.2016
03:25:45

mio
18.12.2016
03:28:58
спасибо

Igor
19.12.2016
09:18:17
А как правильно подключать внешний источник с помощью ODBC?
Я указал
<source>
<odbc>
<connection_string>DSN=ClickhouseDict</connection_string>
<table>os</table>
</odbc>
</source>
при вызове dictGet* дёргается ODBCDictionarySource, но ничего не происходит:
[ 4 ] <Debug> executeQuery: (from [::ffff:127.0.0.1]:59280) select dictGetString('os', 'name', 1)
[ 4 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete
[ 4 ] <Trace> ODBCDictionarySource: SELECT id, name FROM os;
но iusql -v ClickhouseDict подключается успешно.
Пробовал connection_string вплоть до
<connection_string>DSN=ClickhouseDict;UID=igor;PWD=;HOST=127.0.0.1;PORT=5432;DATABASE=clickhouse_dict</connection_string>
DSN определен в ~/.odbc.ini, кликхаус запускается под тем же юзером.
о, добавил DRIVER=/usr/local/lib/psqlodbcw.so туда же, теперь хотя бы ошибку "Connection:Not applicable" пишет %)


Arkady
19.12.2016
09:36:24
Попробуйте lazy load у словарей отключить, тогда он при старте будет пытаться загрузить словари и в лог ошибки сыпать.
Подключал ODBC справочник. Конфиги похожи на ваши.
В DSN указывал только драйвер. Остальные параметры в connection_string. Но это из-за особенностей драйвера, скорее всего.

Igor
19.12.2016
10:10:35
Ну lazyload сыпет теми же ошибками, что и при попытке вызова функций dictGet.
но похоже, это уже не проблема КХ, а че-то в связке unixodbc <-> psqlodbc <-> postgresql косячит. надо в убунте будет проверить.
Спасибо в любом случае )


Stepan
19.12.2016
10:17:52
Как я делал с постгресным драйвером:
sudo apt-get install -y unixodbc
sudo apt-get install -y odbcinst
sudo apt-get install -y odbc-postgresql
В /etc/odbc.ini:
[DEFAULT]
Driver = myconnection
[myconnection]
Description = PostgreSQL connection to norma
Driver = PostgreSQL Unicode
Database = norma
Servername = 10.... (твой хост)
UserName = uname
Password = pwd
Port = 5432
Protocol = 9.3
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ConnSettings =
<dictionary>
<name>table_name</name>
<source>
<odbc>
<table>postgresql_table</table>
<connection_string>DSN=myconnection</connection_string> <!— может потребоваться UID=norma;PWD=norma;, но по идее не должно —->
</odbc>
</source>
<lifetime>
<min>300</min>
<max>360</max>
</lifetime>
<layout>
<flat/>
</layout>
<structure>
<id>
<name>id</name>
</id>
<attribute>
<name>some_column</name>
<type>Int32</type>
<null_value>-1</null_value>
</attribute>
...
</structure>
</dictionary>
Так все взлетало без проблем


Alexander
19.12.2016
11:07:19
Коллеги, может быть уже обсуждалось, а можно ли через jdbcTemplate.update некоторый параметр поставить null, чтобы это заинсертить в КХ
или функция нужна какая-то обязательная, а то пишет Code: 48, e.displayText() = DB::Exception: NULL literals are not implemented yet: (at row 1), e.what() = DB::Exception
хотя сделать, что если float32 равно 0, то ничего не добавляется, чтобы место сэкономить

Darafei
19.12.2016
11:13:12
в кликхаусе же нет нуллов?