сыпаться очень много событий(типы известны заранее(7шт)), объединеных 4-мя столбцами.
Схема:
datetime | event | id1 | id2 | id3 | id 4
———————————————————
datetime | 1 | 2 | 3 | 4 | 5
События могут повторяться, но по ним можно сагрегировать конечное состояние объекта cityHash(id1, id2, id3, id4)
Хотелось бы иметь MaterializedView, который хранил бы в себе конечное состояние и массив уникальных событий(уникальное - последнее по дате и типу),
что бы в итоге поедставление имело следующий вид:
cityHash(id1, id2, id3, id4) | events
—————————————————————————
111211212312321312123 | [event1, event2]
Подготовил MaterializedView на основе AggregatingMergeTree, и вроде бы всё хорошо, но только при создании с POPULATE.
Когда события начинают сыпаться в реалтайме - массив events принимает последнее событие.
Ищу подсказки, как быть. Может быть кто - нибудь сталкивался с подобным?
Заранее спасибо.
AggregatingMergeTree с агрегирующей функцией groupArrayState https://gist.github.com/den-crane/048ce66bc59f5577d56e42d76934682e это старый gist. сейчас можно использовать SimpleAggregateFunction (GroupUniqArray)-- они быстрее.
Обсуждают сегодня