184 похожих чатов

Всем привет! У меня есть табличка с полем requests AggregateFunction(count),

которая прореживается с помощью ttl GROUP BY, в нем делаю SET requests = countMergeState(requests), но хочется получить не сумму, например за час, а среднее значение за этот час, как это можно сделать? Получается нужен некий avg в момент ttl group by?
Заранее спасибо за ответ

25 ответов

15 просмотров

https://www.perplexity.ai/search/5808c06d-b972-495c-aaae-ac0a5cf28731?s=u https://kb.altinity.com/altinity-kb-queries-and-syntax/ttl/ttl-group-by-examples/

-Merge сделайте

Stepan- Автор вопроса
Slach [altinity]
-Merge сделайте

У меня же AggregateFunction(count), а не avg, на нее нельзя avgMerge делать

Stepan- Автор вопроса
Slach [altinity]
avg(countMerge(count)) ?

Aggregate function countMerge(requests) is found inside another aggregate function in query: While processing countMerge(requests)

Stepan
Aggregate function countMerge(requests) is found i...

=( опс, а просто avg(countField) тоже ошибку возвращает?

Stepan- Автор вопроса

Illegal type AggregateFunction(count, UInt64) of argument for aggregate function avg

Stepan
Illegal type AggregateFunction(count, UInt64) of a...

а вот так? avg(finalizeAggregation(count))

Stepan- Автор вопроса
Slach [altinity]
а вот так? avg(finalizeAggregation(count))

Хм, я наверно вообще не так задал вопрос... У меня есть табличка AggregatingMergeTree с колонкой requests AggregateFunction(count), которую я делю на минуту (в запросе countMerge(requests)/60, чтобы получить RPS. Также в этой табличке есть ttl GROUP BY, который в SET делает requests = countMergeState(requests), но получается его уже нельзя делить на минуту, его надо делить на временной интервал, как это более правильно сделать? Есть идея завести отдельную колонку с дефолтным значением 60 и при set менять его на другие интервалы

Stepan
Хм, я наверно вообще не так задал вопрос... У меня...

ну у вас TTL ... GROUP BY ... SET count=avg(finalizeAggregation(count)) ? и не работает?

Stepan
Хм, я наверно вообще не так задал вопрос... У меня...

да, идея норм. но вам надо как то интервал посчитать тогда

Stepan
Хм, я наверно вообще не так задал вопрос... У меня...

Что если попробовать взять MIN и MAX времени в диапазоне и посчитать разницу — это и будет ваш временной диапазон, на который делить. Дальше получаете коэффициент от разницы минуты к вашей получившейся: (60 / ваша разница) * countMerge(requests) = сколько примерно в минуту?

Stepan- Автор вопроса
Slach [altinity]
ну у вас TTL ... GROUP BY ... SET count=avg(finali...

Conversion from Float64 to AggregateFunction(count, UInt64) is not supported: While processing _CAST(avg(finalizeAggregation(requests)), 'AggregateFunction(count, UInt64)').

Stepan- Автор вопроса
Slach [altinity]
да, идея норм. но вам надо как то интервал посчита...

в плане? я делаю получается в ttl GROUP BY set time = toStartOfHour(time) и для большего интервала toStartOfInterval(time, interval 6 hour)

Stepan- Автор вопроса
Rodion Baskakov
Что если попробовать взять MIN и MAX времени в диа...

немного не понял о каком диапазоне тут идет речь

Stepan
Conversion from Float64 to AggregateFunction(count...

так покажите полный CREATE TABLE на fiddle? откуда у вас requests взялся ? если вы собираетесь count усреднять?

Stepan
немного не понял о каком диапазоне тут идет речь

Насколько я понял, вы группируете записи по минуте, чтобы потом посчитать RPS в минуту. Так что и диапазон является минутой. Но если у вас нет данных за всю минуту, а есть только какая-то их часть внутри минуты, то описанным выше способом можно получить примерные данные внутри минуты используя лишь её часть. Возможно, я неверно понял вашу задачу

Stepan- Автор вопроса

https://xpaste.pro/p/J78L5MnZ

Stepan
https://xpaste.pro/p/J78L5MnZ

ну да, если добавить колонку, то потом ее можно использовать в SELECT и обновлять в GROUP BY ...

Stepan- Автор вопроса
Rodion Baskakov
Насколько я понял, вы группируете записи по минуте...

Спасибо, но мне немного другое нужно было)

Stepan- Автор вопроса
Slach [altinity]
ну да, если добавить колонку, то потом ее можно ис...

Была идея сделать как-то так https://xpaste.pro/p/tiGxOImh но нет, не дает :( в момент optimize final - Not found column 3600 in block. There are only columns: platform, requests, rollup_interval, event_time Пробовал делать умножение rollup_interval, но тоже не дает (ошибка такая же) Есть ли еще какие-то идеи решения? Может RPS как-то по другому хранить?

Stepan
Была идея сделать как-то так https://xpaste.pro/p/...

min(arrayMin([3600])) вот так попробуйте как workaround https://fiddle.clickhouse.com/907d58e4-2fa9-4795-9c74-e40dddafaa27

Slach [altinity]
min(arrayMin([3600])) вот так попробуйте как worka...

😐🖐🏻 min(arrayMin([3600])) вот так попробуйте как workaround https://fiddle.clickhouse.com/907d58e4-2fa9-4795-9c74-e40dddafaa27

Stepan- Автор вопроса
Slach [altinity]
min(arrayMin([3600])) вот так попробуйте как worka...

Not found column [3600] in block. :( видимо вообще самому значение там нельзя сетить, жуть выглядит так, что я как-то совсем не так как надо клик использую

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта