Обсуждаем ClickHouse
Что такое до запятой? Запятая это decimal separator?
Читать полностью…$ cat /etc/clickhouse-server/users.d/allow_deprecated_error_prone_window_functions.xml
<?xml version="1.0" ?>
<clickhouse>
<profiles>
<default>
<allow_deprecated_error_prone_window_functions>1</allow_deprecated_error_prone_window_functions>
</default>
</profiles>
</clickhouse>
всем привет
кто может подсказать, как изменить настройку внутри таблицы system.settings?
хочу изменить параметр allow_deprecated_error_prone_window_functions
да, все верно. ответ искался про первую в результате, так что в этом ответе все ок)
Читать полностью…вот что написал gpt
WITH t AS (
SELECT 1 AS x
UNION ALL
SELECT 2
UNION ALL
SELECT 3
),
t2 AS (
SELECT x::int, ROW_NUMBER() OVER (ORDER BY x) AS rn FROM t
),
t3 AS (
SELECT CASE WHEN rn = 1 THEN NULL ELSE x END AS x, rn FROM t2
)
SELECT
x,
AVG(x) OVER (ORDER BY rn ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS m
FROM t3
ORDER BY rn;
у вас ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
это ДВЕ строки
для кх gpt сказала, что все ок - Use avg(...) or other functions directly, not wrapped )
Читать полностью…без if не сделать https://fiddle.clickhouse.com/e0512186-fcf9-4a34-b51c-46adef76f85a
Читать полностью…with t as (Читать полностью…
select 1 as x
union all
select 2 as x
union all
select 3 as x
),
t2 as (select x::Nullable(Int) as x from t)
select *,
avg(x) OVER (ORDER BY x ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS m
from t2
order by x;
ничего не понятно
покажите структуру таблицы и запрос, результат и что хочется получить
оконка, на то и оконка, что работает по окну...
получается в случае SimpleAggregateFunction можно игнорировать предупреждение "As a query can be executed in arbitrary order, the result of this function is non-deterministic" из документации https://clickhouse.com/docs/sql-reference/aggregate-functions/reference/anylast?
Читать полностью…да, все получится с SimpleAggregateFunction(anyLast
https://fiddle.clickhouse.com/1343f225-1fa9-4669-8ddc-66e45c138b98
25.6.2.5 - скачай как статик билд с https://sourceforge.net/projects/clickhouse.mirror/files/ или builds.clickhouse.com мне, например, этот билд решил проблему с багом в джейсон типе
Читать полностью…Это к сожалению работает только для знака после запятой( все варианты как разряды перебрал(
Читать полностью…я решил так
Читать полностью…
row_number(x) OVER (ORDER BY x ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS rn,
if(rn=1,null,m) as result
всем привет! подскажите кто как мониторит состояние keeper'ов? как понять, что кластер операбелен, кворум собран и пр? собирать вывод 4lw или есть нормальные инструменты? как проверить состояние синхронизации метадаты?
Читать полностью…If x is Nullable, the result will have NULL in the first row (or wherever there’s insufficient data).
Читать полностью…в SQL есть функция avg
если в нее попадает два значения Null и 1 то avg=1
postgresql => select avg(x) from (select 1 x union all select null) t;
1.00000000000000000000
можно у gpt спросить про pg
SELECT printf('%s %s %.02f', 'Hello', 'World', 2024.123456);
https://github.com/ClickHouse/ClickHouse/issues/34142
это предупреждение про запрос, в matview (SimpleAggregateFunction) будет deterministic
Читать полностью…Привет, подскажите, если ли в CH аналог функции PG, для получения отформатированного текста (числа) с разделителями разрядов (тысячи, миллионы и т.д.).
SELECT TO_CHAR( 555555555, '999 999 999 999.9')
Результат: 555 555 555.0
Привет)
Подскажите плиз, как получить null в первом значении оконки (пробовал колонку в nullable - не работает), а не среднее по первому элементу (те сам элемент)avg(x) OVER (ORDER BY y ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
? Вроде была опция на этот счет…
ну и кстати можно использовать Null таблицу -> MV -> *mergetree
будет нулевой оверхед
подскажите как можно поступить если мне нужно exactly-once собирать агрегаты в таблице типа:
CREATE TABLE test_table (
completed_at DateTime64(3),
user_id UInt32,
job_id String,
jobs_count UInt64,
latest_job_id AggregateFunction(argMax, String, DateTime64(3)) # очень хочется, но нельзя "DEFAULT argMaxState(job_id, toDateTime64(completed_at, 3))"
) ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(completed_at)
ORDER BY user_id;
insert into test_table select now(),100,'test_id',1,argMaxState('test_id', toDateTime64(now(),3));