Size: a a a

ClickHouse не тормозит

2020 August 13

VP

Vasiliy Panshin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
any left join схлапывает левую и правую таблицы, вам правда нужен any? В 20х версиях кх его переделали и теперь надо писать semi чтобы получился результат как в 19м
select hour, a_zone_temperature.1 as k, avg(a_zone_temperature.2) as v
from (
     select toStartOfHour(param_date)                                            as hour,
            arrayJoin((JSONExtractKeysAndValues(param, 'a_zone_temperature', 'Float32'))) as a_zone_temperature
     from telemetry_common
     where param_date > today()
       and src_id = 125
     group by hour, param
     order by hour desc)
group by hour, k
order by hour, k;


нашёл решение, спасибо за мысль
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Vasiliy Panshin
в строках массив туплов:
[[('3',100),('4',103),('100',102),('0',98),('1',81),('2',95)],[('3',83),('4',94),('100',107),('0',96),('1',91),('2',83)],[('3',85),('4',97),('100',81),('0',88),('1',108),('2',103)],[('3',83),('4',82),('100',102),('0',96),('1',90),('2',105)],[('3',104),('4',89),('100',106),('0',102),('1',109),('2',93)],[('3',105),('4',101),('100',102),('0',101),('1',104),('2',94)],[('3',106),('4',95),('100',95),('0',84),('1',93),('2',109)],[('3',80),('4',88),('100',105),('0',104),('1',87),('2',95)],[('3',95),('4',95),('100',100),('0',107),('1',106),('2',80)],[('3',83),('4',80),('100',107),('0',109),('1',84),('2',110)],[('3',84),('4',97),('100',109),('0',108),('1',108),('2',99)],[('3',108),('4',99),('100',102),('0',101),('1',104),('2',109)],[('3',103),('4',96),('100',102),('0',109),('1',106),('2',101)],[('3',90),('4',109),('100',89),('0',93),('1',109),('2',102)],[('3',82),('4',105),('100',92),('0',84),('1',97),('2',96)],[('3',82),('4',105),('100',90),('0',97),('1',93),('2',87)],[('3',102),('4',90),('100',95),('0',105),('1',86),('2',83)],[('3',88),('4',92),('100',92),('0',110),('1',83),('2',80)],[('3',93),('4',91),('100',90),('0',106),('1',104),('2',107)],[('3',97),('4',80),('100',95),('0',98),('1',100),('2',108)],[('3',91),('4',82),('100',105),('0',84),('1',99),('2',96)],[('3',92),('4',81),('100',106),('0',110),('1',100),('2',96)],[('3',107),('4',100),('100',82),('0',110),('1',102),('2',92)],[('3',105),('4',108),('100',98),('0',103),('1',108),('2',108)],[('3',101),('4',84),('100',93),('0',107),('1',88),('2',84)],[('3',103),('4',83),('100',98),('0',102),('1',98),('2',89)],[('3',83),('4',103),('100',96),('0',108),('1',95),('2',95)],[('3',94),('4',103),('100',93),('0',89),('1',104),('2',94)],[('3',93),('4',91),('100',95),('0',101),('1',95),('2',109)],[('3',101),('4',109),('100',84),('0',105),('1',102),('2',109)]]


arrayReduce('avg', a_zone_temperature) не может примениться к туплам...
arrayReduce('avg', a_zone_temperature.1)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
arrayReduce('avg', a_zone_temperature.2)
источник

VP

Vasiliy Panshin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
arrayReduce('avg', a_zone_temperature.1)
эво как ... чувствую я намудрил )))
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Vasiliy Panshin
эво как ... чувствую я намудрил )))
[('3',100) -- что такое 3? что такое 100?
источник

ЯК

Ян Калмычков... in ClickHouse не тормозит
Привет. может уже было, но что-то не отыскал. Как убрать заданный при создании TTL у таблицы?
источник

VP

Vasiliy Panshin in ClickHouse не тормозит
первый элемент в тупле это идентификатор устройства
источник

VP

Vasiliy Panshin in ClickHouse не тормозит
второй значение
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Ян Калмычков
Привет. может уже было, но что-то не отыскал. Как убрать заданный при создании TTL у таблицы?
никак. Переделать например на 50 лет
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg Majboroda
Спасибо, а где их найти можно?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alex
мне в "наследство" достались готовые таблицы с ENGINE = Join(ANY, LEFT, field), которые вязались к основной посредством joinGet несколько десятков раз, изза чего, как я предполагаю, запрос падал по нехватке оперативки. Пытаюсь заменить много joinGet на несколько Join... как понимаю, мне нужен классический LEFT JOIN, но без any оно дает ошибку Table has incompatible type of JOIN...
кмк вы идете в обратном направлении, ENGINE = Join как раз нужен для того чтобы джойны работали быстрее и не падали по памяти, покажите запрос который был и какая ошибка была
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alex
перепрочел документацию, вроде бы все правильно, any выберет первую попавшуюся (в моем случае - единственную) запись из второстепенной таблицы...  осталось только понять ответ на изначальный вопрос - как сделать в одном селекте несколько any left join (((
в документации ложь
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
добрый день, не было магической функции для вытаскивания всех distinct значений из LowCardinality колонки? (т.е. контент словаря)
не было. select a from group  by a работает быстрее  чем  select distinct a
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
обсуждали же на митапе такую функцию, и Николай Кочетов сказал что можно сделать.
я понял кстати почему ее нет изначально, я тормоз, я знаю. Ее можно использовать и выдрать из .dict файлов все значения словаря только в случае когда нет where. Если where есть, то надо кроме .dict файлов читать еще и bin
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
обсуждали же на митапе такую функцию, и Николай Кочетов сказал что можно сделать.
я понял кстати почему ее нет изначально, я тормоз, я знаю. Ее можно использовать и выдрать из .dict файлов все значения словаря только в случае когда нет where. Если where есть, то надо кроме .dict файлов читать еще и bin
аха, а в ГХ есть issue на такую оптимизацию
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
не было. select a from group  by a работает быстрее  чем  select distinct a
в 20.3 работает точно так же...
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
в 20.3 работает точно так же...
может оптимизация в процессорах появилась
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
может оптимизация в процессорах появилась
а не, все верно, быстрее, я просто на нескольких колонках попробовал, логично что там ловить нечего
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
а не, все верно, быстрее, я просто на нескольких колонках попробовал, логично что там ловить нечего
на нескольких колонках оптимизации lowcardinality не сделаны
источник

D

Dj in ClickHouse не тормозит
всем добрый день ещё раз (особенно тем у кого функциональщина головного мозга =) )

есть таблица EAV в виде
datadatetime, pk1, textualpk1, textualpk2, keycolumn, valuecolumn

кардиналити на pk1 высокий, на key не очень.

в целях отчетности она пивот-иться в вид:
pk1, textualpk1, textualpk2, keycolumn, valuedate1, valuedate2, valuedate3

, пока запрос такой.

with [toDate('2020-04-06') , toDate('2020-04-07') , toDate('2020-04-08')] as "report_dates" 
select pk1, keycolumn,
any("textualpk1") as "textualpk1" , -- very fat strings
any("textual2pk1") as "textual2pk1" , -- very fat strings
(groupArrayInsertAt(Null, 3)(tuple(toNullable("keycolumn")), toUInt32(indexOf("report_dates" , toDate("datadatetime")) -1)).1 as "valuecolumn")[1] as "2020-04-06" ,
"param_values"[2] as "2020-04-07" ,
"param_values"[3] as "2020-04-08"
from keyvalues
group by "pk1" , "keycolumn";

когда строк комбинаций pk1*key очень много жрет память 125 млн строк на 22 ГБ в виду очень Жирных текстовых колонок.
можно как нибудь умнее переписать?

PS. в память словарь с pk1, textualpk1 не влезает. в нашей версии ssd_cache ещё не подвезли.
источник