clickhouse_ru | Unsorted

Telegram-канал clickhouse_ru - ClickHouse не тормозит

11238

Обсуждаем ClickHouse

Subscribe to a channel

ClickHouse не тормозит

судя по query_log на каждой ноде есть такое
/* ddl_entry=query-0000000402 */ EXCHANGE TABLES test.`.tmp.inner_id.9c7165d5-6d16-4952-858b-0c65953c34a2` AND test.table_for_mv

т.е оно как бы RVM выполняет, учитывая что такое есть раз в минуту, но при этом данные не появляются на нодах

Читать полностью…

ClickHouse не тормозит

> 3-х шардов (6 серверов, 2 реплики на шард,

а тут всего 3 ноды
clusterAllReplicas должен 6 дать

Читать полностью…

ClickHouse не тормозит

select * from clusterAllReplicas(''{cluster}'', view(select * from system.macros));

Читать полностью…

ClickHouse не тормозит

ну видимо это неизвестное issue

Читать полностью…

ClickHouse не тормозит

продолжаю держать в курсе событий =)
глючит topK() в комбинации с query_plan_merge_expressions

Читать полностью…

ClickHouse не тормозит

да, забыл ссылку куда можно скопипастить, если напомните я скину целиком запросы на создания таблиц, так будет больше контекста

UPD: https://pastila.nl/?02a23c6e/62cf8ac3a081830c98c6181e6d2739a9#qDmrsXDm4ru0z9qU9X2k4Q==

Читать полностью…

ClickHouse не тормозит

запрос вида

WITH
substr(SniffleBreadcrumb, 1, 7) AS elevator,
substr(SniffleBreadcrumb, 1, 5) AS calcification,
count(*) AS supermarket
SELECT
h3ToParent(LibidoSomeone, 10) AS lycra,
topK(7)(calcification) AS replacement,
supermarket
FROM merge('excess', 'tuna_gathering_espalier_decryption')
WHERE (ExasperationId > 0) AND (lycra != 0) AND (toDate(GazeboSniffleHonorBay) = '2026-05-02') AND (elevator IN ('QRUAS', 'HXPIQ', 'CCTBX'))
GROUP BY lycra
HAVING sumIf(PopularityLinerXylophone, PopularityLinerXylophone > 0) >= 36
FORMAT Null

Читать полностью…

ClickHouse не тормозит

create database test on cluster '{cluster}' ENGINE=Replicated('/clickhouse/databases/test','{shard}','{replica}')


вот так я создал базу

3 сервера ответили что ок - создали, вручную проверил - создали

потом сделал ReplicatedMergeTree таблицу с сырыми данными - отлично создалась на всех шардах
закинул туда данные на каждом шарде отдельно - закинулись - данные вижу

сделал таблицу под MV - создалась - пустая что логично

создал рефрешабл МВ и данные только на инициаторе, на других шардах в таблицах данных нет


select sum(id), hostname() from cluster('{cluster}', test.raw_source_local) group by hostname(); - вот так данные есть с каждого сервера

select sum(sum), hostname() from cluster('{cluster}', test.table_for_mv) group by hostname(); а вот тут данные есть только с того сервера где я создавал refreshable MV

Читать полностью…

ClickHouse не тормозит

ага, я пробовал, так оно создает, но тогда мат вью рефреш запускается на одной ноде и будет обновлять только ее

Читать полностью…

ClickHouse не тормозит

SQL Error [22000]: Code: 36. DB::Exception: This combination doesn't work: refreshable materialized view, no APPEND, non-replicated database, replicated table. Each refresh would replace the replicated table locally, but other replicas wouldn't see it. Refusing to create. (BAD_ARGUMENTS) (version 25.5.2.47 (official build))

Читать полностью…

ClickHouse не тормозит

О, я придумал! Чтобы добавить недостающие даты можно еще раз наджойнить периоды в конце.

Читать полностью…

ClickHouse не тормозит

Так я и говорю что надо другой тип join - cross. В календаре мало строк поэтому это прекрасно работает

Читать полностью…

ClickHouse не тормозит

dp конечно, сорри

Читать полностью…

ClickHouse не тормозит

не понятно все равно, пример в https://fiddle.clickhouse.com/ сделайте
как будто вам нужен cross join и фильтры в where

с другой стороны я делал что-то похожее через array join создавая 0 на каждую дату

Читать полностью…

ClickHouse не тормозит

в смысле нужен join с календарем чтобы 0 отобразить когда данных нет?

Читать полностью…

ClickHouse не тормозит

реплики я пока отключил, тут бы разобраться еще с "мастерами"

Читать полностью…

ClickHouse не тормозит

cluster mycluster
replica replica_node1
shard shard1
cluster mycluster
replica replica_node2
shard shard2
cluster mycluster
replica replica_node3
shard shard3

mycluster это физический кластер


SELECT cluster, shard_num, replica_num, host_name, host_address, port, is_local
FROM system.clusters WHERE cluster='test';

вот такой запрос дает данные кластера test который база репликейтед

Читать полностью…

ClickHouse не тормозит

да и как на такое reproduce накручивать тоже та еще боль. слишком специфичная комбинация

надеюсь оптимизации query plan не будут принудительными в будущем

Читать полностью…

ClickHouse не тормозит

а еще, судя по всему RMV выполняется на каждой ноде, заполняет локальные таблицы, а на остальных нодах данные очищаются, хотя до этого они там были

Читать полностью…

ClickHouse не тормозит

А если структура разная?

Читать полностью…

ClickHouse не тормозит

>сделал таблицу под MV - создалась - пустая что логично

Replicated ?

Читать полностью…

ClickHouse не тормозит

query_plan_merge_expressions
если выключить - все ок

Читать полностью…

ClickHouse не тормозит

значит неправльно добавлены ноды в replicated database
вам надо правильно добавлять реплики, шарды, тогда один раз на шарде на одной из реплик будет запускаться

Читать полностью…

ClickHouse не тормозит

у вас должна быть replicated database и mat view и trg таблицы должны быть в ней

Читать полностью…

ClickHouse не тормозит

Но всем спасибо большое!

Читать полностью…

ClickHouse не тормозит

Джойн нагенерит декартово произведение, а предикат его так же зафильтрует.

Читать полностью…

ClickHouse не тормозит

Фильтр where будет фильтровать уже сджойненные строки, так что нулей не будет все равно.

Читать полностью…

ClickHouse не тормозит

Если нужно добавлять недостающие даты то проще всего order by fill
Если отдельно нужно сгенерить данные, то range и array join или numbers

Читать полностью…

ClickHouse не тормозит

Да. И чтобы группировать по кривым периодам.

Читать полностью…

ClickHouse не тормозит

Привет! Спрашивал в англоязычном чате, но там не очень активное сообщество.
Допустим, у меня есть требование: генерировать агрегаты по периодам дат.

SELECT
dp.start,
COLESCE(COUNT(d.value), 0) AS some_agg
FROM date_periods dp
LEFT JOIN data d
ON d.date >= dp.start
AND d.date < dp.end
— AND some business predicate
GROUP BY dp.start
И получаю Cannot determine keys in JOIN ON expression.

К счастью, у меня в бизнес-предикате было строгое сравнение, в итоге я соорудил костыль в виде
WITH enriched_date_periods AS (
SELECT
start,
end,
some_expression as dim_value
FROM date_periods
)

SELECT
dp.start,
COLESCE(COUNT(d.value), 0) AS some_agg
FROM enriched_date_periods dp
LEFT JOIN data d
ON d.date >= dp.start
AND d.date < dp.end
AND d.dim_value = ds.dim_value
— AND some left business predicate
GROUP BY dp.start
Так работает, но есть ли какой-то более изящный способ получить агрегаты?

Читать полностью…
Subscribe to a channel