Несколько пожеланий

536 views
Skip to first unread message

kona...@gmail.com

unread,
Oct 28, 2016, 6:25:44 AM10/28/16
to ClickHouse
Здравствуйте.

По итогам работы с ClickHouse возник ряд вопросов и пожеланий:

Вопрос  1.  Даже  после  выполнения  команды  OPTIMIZE  TABLE для одно
партиции остались два неслитых парта:

                <row>
                        <partition>201608</partition>
                        <name>20160801_20160810_2_390392_17</name>
                        <replicated>0</replicated>
                        <active>1</active>
                        <marks>358796</marks>
                        <bytes>99068835730</bytes>
                        <modification_time>2016-08-11 02:18:17</modification_time>
                        <remove_time>0000-00-00 00:00:00</remove_time>
                        <refcount>2</refcount>
                        <min_date>2016-08-01</min_date>
                        <max_date>2016-08-10</max_date>
                        <min_block_number>2</min_block_number>
                        <max_block_number>390392</max_block_number>
                        <level>17</level>
                        <database>dat</database>
                        <table>id2</table>
                        <engine>MergeTree</engine>
                </row>
                <row>
                        <partition>201608</partition>
                        <name>20160801_20160822_390394_1422428_18</name>
                        <replicated>0</replicated>
                        <active>1</active>
                        <marks>893656</marks>
                        <bytes>240909428455</bytes>
                        <modification_time>2016-08-23 11:33:51</modification_time>
                        <remove_time>0000-00-00 00:00:00</remove_time>
                        <refcount>2</refcount>
                        <min_date>2016-08-01</min_date>
                        <max_date>2016-08-22</max_date>
                        <min_block_number>390394</min_block_number>
                        <max_block_number>1422428</max_block_number>
                        <level>18</level>
                        <database>dat</database>
                        <table>id2</table>
                        <engine>MergeTree</engine>
                </row>

Вопрос - почему так? Есть какое-то ограничение по объему?

Пожелание 1. Сделать substring(s, offset, length)
по переменным offset и length (сейчас константы).

Пожелание 2.

Добавить "горизонтальные" агрегирующие функции least, greatest.
Они часто используются для вычисления пересечений временных интервалов.

Пожелание 3.

Если написать так:

where ... session_start_time='' ...

то поработает-поработает, дойдет до определенной записи и будет ошибка
Code: 32. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Attempt to read after eof.

Полная  иллюзия  того,  что  дочитала битого конца файла или в ссылках
что-то   не  то.  Потому  что  в  тексте eof. file. И ошибка не сразу.
А всего-то с типами ошибка преобразования.

Текст сообщения об ошибке, наверное, стоит изменить.

Пожелание  4.  Сделайте, пожалуйста, теоретико-множественные операции,
которые есть в SQL -  minus, intersect.

Половина  аналитики на них. Понятно, что можно как-то через left outer
join, но с явными разностью и пересечением будет явно проще.


Спасибо.


P.S.

exit

в  -m режиме не работает - раздражает неимоверно. В других клиентах не
надо ; писать, сразу выходит.



man...@gmail.com

unread,
Oct 29, 2016, 2:15:20 PM10/29/16
to ClickHouse
Здравствуйте.

Есть ограничение по объёму на сливаемые куски - по-умолчанию 250 GB в сумме.

Есть недокументированная возможность - написать OPTIMIZE TABLE t PARTITION YYYYMM FINAL
- такой запрос будет сливать все куски заданной партиции в один, независимо от размера;
- также стоит иметь ввиду, что он будет выполнять "слияние" даже если есть только один кусок
(такое имеет смысл, например, для материализации добавленных DEFAULT-столбцов)

По поводу пожеланий:

1. substring с неконстантными аргументами.
Хотели сделать.

2. Такие функции уже есть, называются именно так: least, greatest.
Они ещё не попали в документацию. Во вторых, их работа сейчас ограничена: поддерживаются только числовые аргументы, даты, даты-с-временем; количество аргументов - только два. Надо будет дорабатывать.

3. Мы исправляли сообщения об ошибках при преобразованиях типов (при парсинге из строки) несколько месяцев назад. Возможно, что для некоторых типов оно не доделано. Можете привести конкретный пример (вида: SELECT toSomething('string'))

4. MINUS, INTERSECT.
В ближайшее время обещать не могу. Понятно, что функциональность нужна, надо делать.

5. exit в multiline режиме.
Действительно, не работает без точки с запятой. Попробуем сделать, чтобы работало.

Спасибо за пожелания!

kona...@gmail.com

unread,
Oct 29, 2016, 3:21:20 PM10/29/16
to ClickHouse
Здравствуйте. Сообщение об ошибке преобразования типов с eof воспроизводится, например, вот так:

ClickHouse client version 1.1.53997.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.53997.

:) CREATE TABLE test ( start_date Date,  START_TIME DateTime,  ID UInt64)
:-] ENGINE = MergeTree(start_date, (ID, start_date), 8192);

CREATE TABLE test
(
    start_date Date, 
    START_TIME DateTime, 
    ID UInt64
) ENGINE = MergeTree(start_date, (ID, start_date), 8192)

Ok.

0 rows in set. Elapsed: 0.041 sec. 

:) INSERT INTO test values('2016-10-01','',12345678);

INSERT INTO test VALUES


Exception on client:
Code: 32. DB::Exception: Attempt to read after eof: (at row 1)

Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.53997.

:) 


пятница, 28 октября 2016 г., 13:25:44 UTC+3 пользователь kona...@gmail.com написал:
Reply all
Reply to author
Forward
0 new messages