Обсуждаем ClickHouse
Добрый вечер. Подскажите, пожалуйста, какой наилучший алгоритм для загрузки с помощью python скрипта логов визитов из API Метрики в таблицу ClickHouse.
Я получаю данные
response_result = requests.get(api_url_result, headers=headers)
tsv_data = StringIO(response_result.text)
df = pd.read_csv(tsv_data, sep='\t')
thousand separator не поддерживается, и в c++ printf тоже емнип не умеет
Читать полностью…До запятой, разделить разрядов, например 55 555 555.55 через пробел, что-то все варианты перебрал, ошибка. SELECT printf('%.01f',55555555.55). Что нужно указать до точки в функции...
Читать полностью…Это к сожалению работает только для знака после запятой( все варианты как разряды перебрал(
Читать полностью…я решил так
Читать полностью…
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 вы можете делать любые трансформации при вставке
https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
Я поискал в интернете и не нашел чтобы где-то говорилось про то, что вставка в связку null engine -> MV -> ReplicatedMergeTree
обеспечивает exactly once.
Если допустить, что у меня всегда вставка в одну партицию, есть поблочная дедупликация в целевой mergetree и deduplicate_blocks_in_dependent_materialized_views=1
, то можно ли с уверенностью сказать что данные не потеряются и дубликатов не будет?
Что такое до запятой? Запятая это 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?
Читать полностью…