
prll
17.04.2017
14:14:30
версия кликхауса какая?

Andrey
17.04.2017
14:40:55
1.1.54165

prll
17.04.2017
14:44:21
https://groups.google.com/forum/#!topic/clickhouse/WfS_9xi6B5A
OPTIMIZE FINAL was fixed in version 1.1.54188

Google

Andrey
17.04.2017
14:45:07
Спасибо, буду апдейтиться
Обновился до 1.1.54198 - результата не добился.
Всё равно в трейс вылетает эта ошибка.

Bob
17.04.2017
15:03:58
Побились данные, есть программа на С которая может "отрезать" побитую часть: https://github.com/ludv1x/ClickHouse/tree/broken-part-cutter/utils/broken-part-cutter

Andrey
17.04.2017
15:05:34
Как я понимаю, в таком случае данные побиты и на реплике?

Maksim
17.04.2017
15:47:44
Добрый день. подскажите делаю
select toDateTime(eventTime)
group by toHour(eventTime)
Column eventTime is not under aggregate function and not in GROUP BY
ожидается - в select вывести дату, а сгруппировать по часу

Igor
17.04.2017
15:49:02
группируйте по дате и по часу
а вообще, я ж вроде говорил уже про https://clickhouse.yandex/reference_ru.html#toStartOfHour
он не будет правильнее в этом случае?

Maksim
17.04.2017
15:50:55
группируйте по дате и по часу
я просто не пойму почему нельзя просто вывести поле а сгруппировать по части данных этого поля. зачем группировать по секундно и потом еще по часу ?

Igor
17.04.2017
15:51:11
так вы и не группируете посекундно

Maksim
17.04.2017
15:51:22
так мне и не надо
только по часу

Google

Igor
17.04.2017
15:52:56
нет. говорю, что не надо.

Maksim
17.04.2017
15:53:29

Igor
17.04.2017
15:53:30
вы хотите по часу для каждой даты или по часу в целом (за месяц например), чтоб в итоге 24 строки получилось?

Maksim
17.04.2017
15:54:07

Igor
17.04.2017
15:55:15
тогда добавьте дату в group by, если она нужна, и в where, если не нужна.

Maksim
17.04.2017
15:57:24

Igor
17.04.2017
15:57:59
ок. у вас отчет по одной дате или по диапазону?

papa
17.04.2017
15:58:06
а работает он так потому, что в общем случае вы не можете вывести из отношения функциональную зависимость, в результате которой ответ становится однозначным.

Maksim
17.04.2017
16:00:08

papa
17.04.2017
16:01:57
вы делаете запрос
select toDateTime(eventTime)
...
group by toHour(eventTime)что вы ожидаете получить

Igor
17.04.2017
16:02:14
+1, непонятно
toDateTime(eventTime) никакого эффекта не даст, eventTime и так DateTime, полагаю

papa
17.04.2017
16:02:34
например у вас данные 00:00:00 , 00:00:01

Maksim
17.04.2017
16:04:26

papa
17.04.2017
16:05:21
что такое полная дата
17/04/2017 - полная дата?

Maksim
17.04.2017
16:06:02
это Y-m-d h:i:s

Google

Maksim
17.04.2017
16:06:07
просто вывести datetime поле
но группировку осуществить по часу

papa
17.04.2017
16:07:22
очень хорошо. у вас есть две строки
eventTime
2000-01-01 00:00:00
2000-01-01 00:01:00что должен выдать ваш запрос

Igor
17.04.2017
16:07:28
:) SELECT toStartOfHour(timestamp) AS hr, count() FROM click WHERE timestamp BETWEEN '2017-04-13 20:00:00' AND '2017-04-14 03:00:00' GROUP BY hr ORDER BY hr
┌──────────────────hr─┬─count()─┐
│ 2017-04-13 20:00:00 │ **** │
│ 2017-04-13 21:00:00 │ **** │
│ 2017-04-13 22:00:00 │ **** │
│ 2017-04-13 23:00:00 │ **** │
│ 2017-04-14 00:00:00 │ **** │
│ 2017-04-14 01:00:00 │ **** │
│ 2017-04-14 02:00:00 │ **** │
└─────────────────────┴─────────┘

Maksim
17.04.2017
16:09:29
Спасибо
toStringCutToZero скажите эта функции сильно грузит сервак (серер уходит в аут). В чем может быть дело?

Igor
17.04.2017
16:52:25
уверены, что дело в этой функции?
над каким столбцом делаете, че там за данные?
может проще в String хранить?

Maksim
17.04.2017
16:53:15
может и проще. просто когда результат возвращается от кх то там где строки куча байт символов
поэтому хочется вырезать их чтобы получить нормальную строку
вот даже сравнил вешаю на одно поле toStringCutToZero и получаю в 2 раза дольше выполнение запроса

Igor
17.04.2017
16:55:14
¯\_(ツ)_/¯
если хочется нормальную строку - лучше хранить данные в нормальных строках
а toString так же медленно работает?

Maksim
17.04.2017
16:55:16
хотя на счет в 2 раза дольше. это как-то случайно так вышло
помоему они одинаковы по производительности

Igor
17.04.2017
16:57:30
ну если одинаково, но медленно/крашится - возможно, имеет смысл перезалить данные, заменив fixedstring в string
если fixedstring вам по факту не нужен

Maksim
17.04.2017
17:02:27
ладно будем думать)) но тут есть какой-то баг крашится сервак из-за применения этих функций например два поля fixedString и два поля пытаешься обработать функцией в итоге сыпется сервак. решение - просто сделал toString на одно из полей

papa
17.04.2017
17:03:13
пример схемы, пример запроса?

Maksim
17.04.2017
17:03:37

Google

Igor
17.04.2017
17:03:38
и лог выполнения запроса не помешает наверн

Maksim
17.04.2017
17:04:07
applicationName String, os FixedString(70)

Igor
17.04.2017
17:04:20
toString(string) это хорошо

Maksim
17.04.2017
17:04:26
ну тут вроде все правильно
сча найду это поле
а вот я понял я на поле типа String вешал toStringCutToZero
и это вызывает краш сервера
никакого эксепшена ничего. просто висит и пытается выполнить запрос как в это время сервер уже сдох)

papa
17.04.2017
17:06:23
SELECT
toStringCutToZero(applicationName)?

Maksim
17.04.2017
17:07:17

Igor
17.04.2017
17:11:05
ну, видимо оперативки не хватает и запрос по меньшему периоду нужен?
(хотя ваще странно)

papa
17.04.2017
17:11:35

Alexey
17.04.2017
17:12:22
Я уже посмотрел и воспроизвёл - это баг.

Maksim
17.04.2017
17:14:09
?

Alexey
17.04.2017
20:45:05
Мы уже знаем, что следующий митап будет в Екб где-то в середине мая.
Сейчас выбираем темы для докладов.

Рулон
18.04.2017
05:46:26
Доброе утро! Подскажите пожалуйста, а куда надо положить csv файлик чтобы загрузить его в КХ? Спасибо

Igor
18.04.2017
05:47:54
в смысле - куда?
вы хотите загрузить clickhouse-clientом или по HTTP?

Рулон
18.04.2017
05:48:45
Вот в доке написано cat <<_EOF | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";
у меня файлик называется dump.csv

Igor
18.04.2017
05:50:17
можно cat dump.csv | clickhouse-client ...

Google

Igor
18.04.2017
05:50:59
~ ❯ clickhouse-client -q 'CREATE TABLE test (s String, x Int64) ENGINE = TinyLog;';
~ ❯ cat test.csv
"hello",123
"world",456
~ ❯ cat test.csv | clickhouse-client -q 'INSERT INTO test FORMAT CSV';
~ ❯ clickhouse-client -q 'SELECT * FROM test FORMAT PrettyCompactNoEscapes';
┌─s─────┬───x─┐
│ hello │ 123 │
│ world │ 456 │
└───────┴─────┘

Рулон
18.04.2017
06:04:18

Igor
18.04.2017
06:04:32
ну у меня test.csv, у вас - dump.csv =)
если он в той же папке, должно быть достаточно
если не в той же, то можно относительный/полный путь до файла указать, соответственно

Рулон
18.04.2017
06:06:10

Igor
18.04.2017
06:06:22
в той же, в которой сейчас открыт терминал
если набрать команду pwd, отобразится текущая папка
https://www.digitalocean.com/community/tutorials/how-to-use-cd-pwd-and-ls-to-explore-the-file-system-on-a-linux-server

Рулон
18.04.2017
06:13:40

Igor
18.04.2017
06:14:14
команда cat может и нормально прожует, а вот сервер уже не факт. лучше разбить на файлики поменьше. по 100к строчек, например. или по миллиону.
вдруг еще ошибки при парсинге CSV будут
и лучше clickhouse-compressorом прогнать, наверное

Рулон
18.04.2017
06:15:42
Благодарю ?

Kirill
18.04.2017
06:15:45
Кстати, а какой гошный драйвер сейчас считается тру? Или пока не определились?
тут нет тру или не тру, если вы, например, хотите использовать встроенные функции CH для вставки данных то используйте github.com/roistat/go-clickhouse т.к. он работает поверх http и просто пересылает запрос на сервер, напротив https://github.com/kshvakov/clickhouse использует "нативный" формат который требует преобразования данных на клиенте, т.е. если поле FixedString(16) то он и ждет 16 байт, а не UUIDStringToNum('uuid-uuid'), но он позволяет вставлять данные в 2-3 раза быстрее чем через http интерфейс если его использовать в обход гошного интерфейса https://github.com/kshvakov/clickhouse/blob/master/examples/direct.go


Andrey
18.04.2017
06:45:21
Доброе утро, есть ли возможность проставить DEFAULT для столбца в Nested?
create table test2 (
id Int8 ,
date Date,
items Nested
(
name String DEFAULT 'None',
type String DEFAULT 'None')
) ENGINE = ReplacingMergeTree(date, (id), 8192)
Syntax error: failed at position 77 (line 6, col 17)

Igor
18.04.2017
06:47:51
Есть неудобный способ:
CREATE TABLE table_test
(
date Date,
isp.name Array(String),
isp.ispHash Array(Int64) DEFAULT arrayMap(x -> cityHash64(x), isp.name)
) ENGINE = MergeTree(date, date, 8192)
(несколько столбцов-массивов с общим префиксом до точки в имени, полностью эквивалентны Nested структуре).
Вокруг составных имён поставьте обратные кавычки (их съел Telegram).


Andrey
18.04.2017
07:23:33
Спасибо большое, заработало!
Есть ещё один (глупый) вопрос, но я с ним не могу разобраться.
Есть таблица:
CREATE TABLE test.test ( ts String DEFAULT \'None\', ts2 String DEFAULT \'None\', ti2 Int32 DEFAULT CAST(0 AS Int32), date Date) ENGINE = ReplacingMergeTree(date, ti2, 8192)
Как правильно инсёртить пустые строки? В документации не нашёл примера.
:) insert into test values ( 'kjh',,,'1990-08-14')
INSERT INTO test VALUES
Exception on client:
Code: 62. DB::Exception: Cannot parse expression of type String here: ,,'1990-08-14')
Connecting to database test at localhost:9000.
Connected to ClickHouse server version 1.1.54198.
Заранее спасибо!