уникальность определяется одним из полей вложенных массивов, не знаете что делать?
уникальность чего определяется ? Ключ для агрегации задается в Order by таблицы, мерж не смотрит внутрь AggregateFunction, он вычисляет AggregateFunction группируя по полям Order_by таблицы грубо говоря нельзя сделать select sum(V), K group by if(V=5) ,K
В конечном итоге MaterializedView должен иметь такой вид: cityHash(id1, id2, id3, id4) | events —————————————————————————————— 111211212312321312123 | [[event, datetime], [event, datetime]] И нужна уникальность массивов в event по полю events, там должны быть только последние добавленные события.
ни черта не понял. Я плохо по русски понимаю, давайте SQL
Пожалуйста, есть таблица: CREATE TABLE entity_events ( datetime DateTime, event UInt8, entity1 String, entity2 String, entity3 String ) ENGINE = MergeTree() ORDER BY datetime; Есть представление: CREATE MATERIALIZED VIEW user_trace_pool ENGINE = AggregatingMergeTree() POPULATE AS SELECT cityHash64(entity1, entity2, entity3) as id, groupArrayState( [event, datetime] ) as events FROM ( SELECT any(datetime) as datetime, event, entity1, entity2, entity3 FROM entity_events GROUP BY (event, entity1, entity2, entity3) ) GROUP BY id; Задача стоит, что бы в массиве events представления всегда лежали только последние события сгруппированые по полю event из таблицы, и отсортированные по datetime. Но, при реалтайм insert, в поле events в представлении оказывается только последнее добавленное событие.
Обсуждают сегодня