источника данных, данные в них разные, объединяет их только общий UUID ну и то, что записи с одинаковым UUID не сильно раскинуты по времени (в рамках 5-ти минут), но иногда бывает и 100 минут.
Вопрос: Если переносить это все в кх, то держать в разных MergeTree табличках и в третью как-то аггрегировать? Допустим, через join внутри mv, хотя я слышал, что это плохая идея
Или же держать одну большую, сильно разреженную, с кучей Nullable полей табличку и как-то в ней аггрегировать по общему UUID?
если общие поля одинаковые, можно вставлять в одну таблицу и схлопывать строки по ключу сортировки с помощью aggregating merge tree
А кх не будет страдать от множественных Nullable полей?
если данные из двух потоков похожи, то сыпать в одну табличку и примириться с некоторым количеством Nullable колонок. Если же данные сильно разные и колонок много, то делать джойн. Но на этом пути есть проблема - левая таблица будет относительно небольшим блоком вставки, а правая(которая пойдет в хеш в памяти) это ваша вторая огромная. Ее надо бы подсократить в подзапросе. Если это можно сделать по времени - отлично. Но тогда время или дата, должны быть первым в order by.
это как бы два разных ивента? Почему бы не хранить их в таблице как два разных ивента? Обогатив атрибуты второго из первого на этапе ETL (до заливки в КХ) сохранив атрибуты для окна 100минут где-то в редисе или кассандре?
Обсуждают сегодня