Size: a a a

ClickHouse не тормозит

2020 August 28

AK

Alexey Kostarev in ClickHouse не тормозит
Ну так я так и делаю
yandex>
       <dictionary>
               <name>Источник</name>
               <source>
                       <odbc>
                               <connection_string>DSN=postgresConnection</connection_string>
                               <table>Источник</table>
                       </odbc>
               </source>
               <layout>
                       <complex_key_hashed />
               </layout>
               <structure>
                       <key>
                       <attribute>
                               <name>primarykey</name>
                               <type>UUID</type>

                       </attribute>
                       </key>
                       <attribute>
                               <name>createtime</name>
                               <type>DateTime</type>
                               <null_value>0000-00-00 00:00:00</null_value>
                       </attribute>
...
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Или что-то не так?
источник

AK

Alexey Kostarev in ClickHouse не тормозит
В смысле через
CREATE Dictionary
?
источник

AK

Alexey Kanaev in ClickHouse не тормозит
Добрый день! Столкнулись с проблемой после обновления Clickhouse с версии 19.14.10 до 20.3.10

Перестали работать запросы оптимизации по партициям такого вида:
OPTIMIZE TABLE tableAAA PARTITION today()-1 FINAL;

SQL Error [62]: ClickHouse exception, code: 62, host: mn-hd0068, port: 8123; Code: 62, e.displayText() = DB::Exception:
Syntax error: failed at position 75: FINAL. Expected one of: AND, OR, token, NOT, BETWEEN, LIKE, IS, NOT LIKE, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, QuestionMark (version 20.3.10.75)


При этом если задавать партицию не функцией - все работает:
OPTIMIZE TABLE tableAAA PARTITION '2020-08-27' FINAL;

Как можно решить эту проблемку?
Спасибо!
источник

DT

Dmitry Titov in ClickHouse не тормозит
Alexey Kanaev
Добрый день! Столкнулись с проблемой после обновления Clickhouse с версии 19.14.10 до 20.3.10

Перестали работать запросы оптимизации по партициям такого вида:
OPTIMIZE TABLE tableAAA PARTITION today()-1 FINAL;

SQL Error [62]: ClickHouse exception, code: 62, host: mn-hd0068, port: 8123; Code: 62, e.displayText() = DB::Exception:
Syntax error: failed at position 75: FINAL. Expected one of: AND, OR, token, NOT, BETWEEN, LIKE, IS, NOT LIKE, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, QuestionMark (version 20.3.10.75)


При этом если задавать партицию не функцией - все работает:
OPTIMIZE TABLE tableAAA PARTITION '2020-08-27' FINAL;

Как можно решить эту проблемку?
Спасибо!
Так и задумано, изменили парсинг ключа партицирования
источник

DT

Dmitry Titov in ClickHouse не тормозит
можешь обернуть в tuple
источник

YA

Yuri Alexandrovich in ClickHouse не тормозит
есть столбец с timestamp событиями, надо сделать выборку по событиям за 5 дней, с группировкой по дням. Причем, если такого события нет, то ставится 0 в этот день, если события есть, они суммируются. Как сделать запрос, подскажите?
источник

AK

Alexey Kanaev in ClickHouse не тормозит
Dmitry Titov
можешь обернуть в tuple
Спасибо! помогло👍
источник

MB

Maksim Baryshev in ClickHouse не тормозит
Добрый день коллеги.
Подскажите пожалуйста на что нужно ориентироваться при выборе колонок для PRIMARY KEY и ORDER BY при создании таблицы?
Хочу сделать таблицу для логирования событий, примерно так:
CREATE TABLE log (`domain_id` UInt32, `provider` String, `value_1` Decimal(9, 2), ... // ещё несколько колонок с данными
`ctime` DateTime DEFAULT toDateTime(NOW())) ENGINE = MergeTree() PARTITION BY ctime
PRIMARY KEY (domain_id, provider)
ORDER BY (domain_id, provider, ctime)
SETTINGS index_granularity = 8192


важен ли порядок полей в ORDER BY? Должен ли он совпадать с порядком полей в PRIMARY?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Yuri Alexandrovich
есть столбец с timestamp событиями, надо сделать выборку по событиям за 5 дней, с группировкой по дням. Причем, если такого события нет, то ставится 0 в этот день, если события есть, они суммируются. Как сделать запрос, подскажите?
select toDate(timestamp) dt, count()
from...
where timestamp >= toStartOfDay(now()) - interval 5 days
group by dt
order by dt with fill
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maksim Baryshev
Добрый день коллеги.
Подскажите пожалуйста на что нужно ориентироваться при выборе колонок для PRIMARY KEY и ORDER BY при создании таблицы?
Хочу сделать таблицу для логирования событий, примерно так:
CREATE TABLE log (`domain_id` UInt32, `provider` String, `value_1` Decimal(9, 2), ... // ещё несколько колонок с данными
`ctime` DateTime DEFAULT toDateTime(NOW())) ENGINE = MergeTree() PARTITION BY ctime
PRIMARY KEY (domain_id, provider)
ORDER BY (domain_id, provider, ctime)
SETTINGS index_granularity = 8192


важен ли порядок полей в ORDER BY? Должен ли он совпадать с порядком полей в PRIMARY?
ориентироваться на будущие запросы. Надо знать какие where будут превалировать.

порядок в primary key важен
порядок в order by и primary key должен совпадать
источник

tc

to0n1 ccc in ClickHouse не тормозит
всем привет! подскажите пожалуйста
нужно сделать запрос вида

select * from events e inner join ( COMPLEX QUERY HERE ) c on c.userId = e.userId and e.datetime between c.date1 and c.date2
умеет ли такое делать КХ ?
источник

tc

to0n1 ccc in ClickHouse не тормозит
asof join пробовал
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
to0n1 ccc
всем привет! подскажите пожалуйста
нужно сделать запрос вида

select * from events e inner join ( COMPLEX QUERY HERE ) c on c.userId = e.userId and e.datetime between c.date1 and c.date2
умеет ли такое делать КХ ?
не умеет. В смысле вам надо перенести в where

select * from events e
    inner join ( COMPLEX QUERY HERE ) c on c.userId = e.userId
where e.datetime between c.date1 and c.date2

КХ делает join только по = , потому что используется hashjoin. И сравниваются (лукап) хеши в хештаблицах
источник

tc

to0n1 ccc in ClickHouse не тормозит
боюсь что у меня тут гдето проблема с логикой... суть задачи выбрать события пользователей за время которое они участвовали в соревновании
таких соревнований много и каждный мог участвовать в нескольких, но при этом они не пересекаются по времени

COMPLEX QUERY HERE возвращает таблицу вида
contestID userID contestStartDate contestEndDate

1                1           2020-01-01         2020-01-02  
1                2           2020-01-01         2020-01-02
2                2           2020-01-02         2020-01-03
2                3           2020-01-02         2020-01-03
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Подскажите плз, можно ли как-то сделать детач нескольким таблицам сразу за один запрос?
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
дока говорит что нет
но можно два запроса подать за раз, в кх клиенте опция мультквери
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
-n [ --multiquery ]                   multiquery
источник

A

Artem in ClickHouse не тормозит
Это нормальное поведение сортировки после группировки?

SELECT 
   symbol,
   partition
FROM trades_gaps
GROUP BY
   symbol,
   partition
ORDER BY
   symbol ASC,
   partition ASC
LIMIT 644, 15

┌─symbol─┬─partition─┐
│ VIBBTC │    201904 │
│ VIBBTC │    202006 │
│ VIBBTC │    202003 │
│ VIBBTC │    202007 │
│ VIBBTC │    201710 │
│ VIBBTC │    202005 │
│ VIBBTC │    201910 │
│ VIBBTC │    201908 │
│ VIBBTC │    201907 │
│ VIBBTC │    201905 │
│ VIBBTC │    201911 │
│ VIBBTC │    201903 │
│ VIBBTC │    202008 │
│ VIBBTC │    201909 │
│ VIBBTC │    201912 │
└────────┴───────────┘


Но, если в скобках, то:

SELECT 
   symbol,
   partition
FROM trades_gaps
GROUP BY
   symbol,
   partition
ORDER BY (symbol, partition) ASC
LIMIT 644, 15

┌─symbol─┬─partition─┐
│ VIBBTC │    201710 │
│ VIBBTC │    201903 │
│ VIBBTC │    201904 │
│ VIBBTC │    201905 │
│ VIBBTC │    201906 │
│ VIBBTC │    201907 │
│ VIBBTC │    201908 │
│ VIBBTC │    201909 │
│ VIBBTC │    201910 │
│ VIBBTC │    201911 │
│ VIBBTC │    201912 │
│ VIBBTC │    202001 │
│ VIBBTC │    202002 │
│ VIBBTC │    202003 │
│ VIBBTC │    202004 │
└────────┴───────────┘


Наблюдается на версиях: 20.6.4.44 и 20.6.3.28-stable
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Это нормальное поведение сортировки после группировки?

SELECT 
   symbol,
   partition
FROM trades_gaps
GROUP BY
   symbol,
   partition
ORDER BY
   symbol ASC,
   partition ASC
LIMIT 644, 15

┌─symbol─┬─partition─┐
│ VIBBTC │    201904 │
│ VIBBTC │    202006 │
│ VIBBTC │    202003 │
│ VIBBTC │    202007 │
│ VIBBTC │    201710 │
│ VIBBTC │    202005 │
│ VIBBTC │    201910 │
│ VIBBTC │    201908 │
│ VIBBTC │    201907 │
│ VIBBTC │    201905 │
│ VIBBTC │    201911 │
│ VIBBTC │    201903 │
│ VIBBTC │    202008 │
│ VIBBTC │    201909 │
│ VIBBTC │    201912 │
└────────┴───────────┘


Но, если в скобках, то:

SELECT 
   symbol,
   partition
FROM trades_gaps
GROUP BY
   symbol,
   partition
ORDER BY (symbol, partition) ASC
LIMIT 644, 15

┌─symbol─┬─partition─┐
│ VIBBTC │    201710 │
│ VIBBTC │    201903 │
│ VIBBTC │    201904 │
│ VIBBTC │    201905 │
│ VIBBTC │    201906 │
│ VIBBTC │    201907 │
│ VIBBTC │    201908 │
│ VIBBTC │    201909 │
│ VIBBTC │    201910 │
│ VIBBTC │    201911 │
│ VIBBTC │    201912 │
│ VIBBTC │    202001 │
│ VIBBTC │    202002 │
│ VIBBTC │    202003 │
│ VIBBTC │    202004 │
└────────┴───────────┘


Наблюдается на версиях: 20.6.4.44 и 20.6.3.28-stable
symbol lowCardinality ?
источник