Pull to refresh

Comments 2

Спасибо за статью. Пара вопросов

А что дальше делать с таблицией default.uk_price_paid_agg?

Т.е. мы её создали, заполнили, а как держать её в актуальном состоянии?

А вот так написать нельзя sumMerge(sumState(column1))?

Т.е. зачем там подзапрос?

Есть два варианта, как держать данную таблицу в актуальном состоянии, и они зависят от того, как была реализована таблица.

Вариант 1.

В случае если таблица была создана, как в статье, то тогда нужен сторонний инструмент, который будет считать стейты для функций и загружать в таблицу. Например, это может быть какая-нибудь реализация с кроном или Airflow. Т.е. в таком случае мы считаем, на примере реализации в статье, для всех полей (измерений) avgState(avg_price) и загружаем в нашу таблицу default.uk_price_paid_agg

Вариант 2.

Если у таблицы default.uk_price_paid_agg был бы движок AggregatingMergeTree, а не просто MergeTree, то тогда мы могли бы создать материализованное представление, которое работает как тригер на вставку данных в таблицу Источник. Для нас это была бы таблица default.uk_price_paid.

В дальнейшем, после того как мы настроили вставку новых данных, нам достаточно вытащить нужные измерения в секцию group by и финализировать агрегацию, в нашем случае avgMerge(avg_price). В результате чего мы получим корректное среднее для выбранных нами измерений

Sign up to leave a comment.