@clickhouse_ru

Страница 37 из 723
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
Можно вставлять с вызовом функции UUIDStringToNum, но вроде, бы только в формате Values.
Большое спасибо! Наверное строка в документации не совсем актуальна уже: "Ни один из форматов данных не позволяет использовать в качестве значений выражения. То есть, вы не можете написать INSERT INTO t VALUES (now(), 1 + 1, DEFAULT)."

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)

Или мы где-то "закривили" руки себе ))

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
Я так понимаю бинарные данные лучше в стринг не засовывать?

Юрий
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
вроде без разницы, можно в String, можно в FixedString
Есть ли какая то встроенная функция для экранирования бинарных данных?

Igor
17.12.2016
21:02:58
Есть ли какая то встроенная функция для экранирования бинарных данных?
данные экранируются на уровне форматов, насколько я помню есть еще hex и ipv6/uuid-функции (которые превращают бинарно хранящиеся айпишники и уиды в человекочитабельные)

вроде бы 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
hex() совсем не подходит?(
Наверное лучше на клиенте делать hex() и писать в базу чистую строку

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
завел тикет на всякий случай, https://github.com/yandex/ClickHouse/issues/270
Можно легко, но чуть-чуть сомневаюсь. Всё-таки часто правим в документации какие-нибудь ошибки и удобно, что они сразу выкладываются. А отдельно в stable ничего нельзя коммитить (обновляется скриптом при релизе, с помощью git reset).

Всем привет. Можно ли с++ драйвер для Cassandra положить в contrib? В рамках фичи словари в Cassandra.
Привет. Можно. Обязательно добавить в инструкцию по сборке. Если получается нетривиально - надо сделать флаг, чтобы отключалось.

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
в кликхаусе же нет нуллов?

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