Привет.
В ClickHouse есть встроенная возможность сэмплирования. Но её сценарий использования несколько другой.
Суть его в том, что в таблице продолжают храниться все данные и в стоимости хранения мы ничего не выигрываем,
но при этом данные отсортированы таким образом, что из таблицы можно достаточно легко прочитать любой сэмпл данных.
Для этого в таблице должен быть задан ключ сэмплирования, который позволяет выбрать - какого вида выборка данных нас интересует. Например, выборка подмножества посетителей - чтобы данные одного посетителя либо целиком попали либо целиком не попали в выборку. После этого, сэмплирование поддерживается на уровне синтаксиса: можно написать SELECT ... FROM table SAMPLE 0.1.
Другое дело, если нужно сохранять меньше данных в таблицу.
Для этого проще всего реализовать эту функциональность на стороне клиента.
Пример. Сделать несколько таблиц вида:
hits,
hits_10,
hits_100
Одновременно писать все данные в hits, десятую долю в hits_10, сотую долю в hits_100.
Потом данные из hits удалять через месяц, а данные в hits_10, hits_100 не удалять.
Писать сразу в сэмплированные таблицы гораздо проще, чем потом перекладывать данные INSERT SELECT-ом, хотя такое тоже можно.
Также несколько независимых таблиц, которые одновременно, заполняются клиентом - это более простое решение, чем использовать MATERIALIZED VIEW. Впрочем, его тоже можно использовать, но "явный" вариант мне нравится больше.