Преобразование типов данных

430 views
Skip to first unread message

Михаил Вячеславович

unread,
Apr 27, 2017, 1:20:56 AM4/27/17
to ClickHouse
Всем, привет!
никак не могу победить преобразование временных типов данных.
Есть простой исходный пример:

cat <<_EOF | clickhouse-client --query="INSERT INTO test FORMAT CSV";
3,some text,
4,some more text,2016-08-14 00:00:01
_EOF

в первой строке отсутствует значение типа DateTime.

Как я могу получить селектом из этого поля 
toYear
toMonth
toDayOfMonth
toDayOfWeek
toHour
для первой строки исходной таблицы чтобы это были тоже пустые значения, а для второй те что из значения 2016-08-14 00:00:01

Если первое пустое значение конвертировать в 0000-00-00 00:00:00, то значения
toYear
toMonth
toDayOfMonth
toDayOfWeek
toHour
получаются искаженными, поскольку минимальный год = 1970, месяц минимальный = 1 и так далее.

Есть какой-то вариант обработки таких значений?

a...@imagespark.ru

unread,
Apr 27, 2017, 2:46:13 AM4/27/17
to ClickHouse
Можно попробовать сделать Nullable колонку, тогда вместо пустой даты с нулями будет NULL и можно впилить проверку на IS NULL или еще чего. Как с NULL работать можно посмотреть тут:

https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00395_nullable.sql


Лично я Nullable еще не применял, но тестировал как он работает, проблем вроде нет. Странно, что смерджили в мастер ветку давно, а в документации об этом ничего не сказано :) Видимо Алексей не фанат NULL :)


четверг, 27 апреля 2017 г., 8:20:56 UTC+3 пользователь Михаил Вячеславович написал:

Михаил Вячеславович

unread,
Apr 27, 2017, 4:08:56 AM4/27/17
to ClickHouse
Спасибо за ссылку очень помогла, кажется разобрался, придется на bcp в sql формат выгрузки менять. 

четверг, 27 апреля 2017 г., 13:46:13 UTC+7 пользователь a...@imagespark.ru написал:
Reply all
Reply to author
Forward
0 new messages