вот такая вот вьюха CREATE MATERIALIZED VIEW external_ips_daily
ENGINE = SummingMergeTree(bv) PARTITION BY toYYYYMM(date) ORDER BY (date, uuid)
AS SELECT
toDate(sample_time) as date,
port_id as uuid,
ip_address,
count(*) as bv
FROM external_ips
GROUP BY date, port_id, ip_address;
Таблица external_ips - ReplacingMergeTree, соответственно туда данные пишут несколько коллекторов. И во вьюху залетает по несколько записей через count(*), потому что исходная таблица не успевает дубликаты схлопнуть. Существуют может быть какие-то рецепты что бы это обойти? Пока из идей только всё-таки переход на AggregationMergeTree черезу полное дублирование записей во вьюху с аггрегацией
вы не правильно понимаете что такое VIEW и как оно работает это не "исходная таблица не успевает схлопнуть", она их схлапывает но существенно позже вставки во VIEW прилетает только кусок данных который вставляется конкретным INSERT и селект работает не с external_ips а с куском данных из INSERT который вставляется в external_ips VIEW это AFTER INSERT триггер который вешается на все таблицы из FROM секции
По этому запись еденицы вместо count и должна сработать
Обсуждают сегодня