пачками по 10000 строк, обнаружилось, что для некоторых строк (закономерность пока не могу найти), данные в таблице table1 есть (те по select final они видны), а вот в MV этих данных нету 
                  
                  
                  
                  
                  
                  Если повторно руками вставить данные в исходную таблицу, то они появляются в MV
                  
                  
                  
                  
                  
                  Как такое дебажить? куда смотреть?
                  
                  
                  
                  
                  
                  
                  
                  
                  CREATE TABLE table1
                  
                  
                  (
                  
                  
                      `item` String,
                  
                  
                      `event_source_hi` Int8 DEFAULT -1,
                  
                  
                      `event_source_lo` Int8 DEFAULT -1,
                  
                  
                      `event_state` Int8 DEFAULT -1,
                  
                  
                      `event_last_seen` UInt32 DEFAULT 0
                  
                  
                  )
                  
                  
                  ENGINE = ReplacingMergeTree(event_last_seen)
                  
                  
                  PRIMARY KEY item
                  
                  
                  ORDER BY (item, event_source_hi, event_source_lo, event_state)
                  
                  
                  
                  
                  
                  к ней приделана MV таблица
                  
                  
                  
                  
                  
                  CREATE MATERIALIZED VIEW table1_mv
                  
                  
                  ENGINE = AggregatingMergeTree
                  
                  
                  PRIMARY KEY item
                  
                  
                  ORDER BY item
                  
                  
                  TTL toDateTime(last_seen, 0, 'UTC') + toIntervalMonth(13)
                  
                  
                  SETTINGS index_granularity = 8192 AS
                  
                  
                  SELECT
                  
                  
                      item,
                  
                  
                      maxSimpleStateIf(event_last_seen, (event_source_hi = 0) AND (event_source_lo = 0) AND (event_state = 1)) AS a1_last_seen,
                  
                  
                      maxSimpleStateIf(event_last_seen, (event_source_hi = 0) AND (event_source_lo = 1) AND (event_state = 1)) AS a2_last_seen,
                  
                  
                      ... (куча похожих полей)
                  
                  
                      maxSimpleState(event_last_seen) AS last_seen
                  
                  
                  FROM table1
                  
                  
                  GROUP BY item
                  
                  
                  SETTINGS optimize_aggregation_in_order = 1
                  
                  
                
mv работает как часы, швейцарские. у вас где-то косяк в ttl или агрегации.
Обсуждают сегодня