TGViewer
Data Engineer Data Engineer @dataengineernews · 478 subscribers
Post #187 294

Forwarded from DataJourney

Партиции в Clickhouse, нюансы нейминга

Использование обращений напрямую к партициям позволяет выполнять действия с данными с использованием меньшего количества ресурсов. Пользуюсь этим на проекте с Clickhouse, если нужно удалить большой кусок данных. На неделе столкнулся с ошибкой при работе с партициями по дате и, после поиска причины проблемы, был неприятно удивлен одновременной гибкости и строгости Clickhouse. Вроде бы доке все описано довольно подробно: PARTITION… Но!

Но, от меня укрылась одна особенность, которой хочу поделиться. В общем случае, как оказалось, ключ партиции (системная колонка _partition_id из рассматриваемой таблички) может не совпадать с наименованием партиции (partition из system.parts). При этом, наименование партиции может быть как строкой, так и числом, так и кортежем (tuple).

При этом в различных операциях с партициями поддерживаются различные варианты указания партиции (см. доку выше), но вот в операции ALTER TABLE DELETE IN PARTITION ожидается представление из system.parts. При этом, в зависимости от типа данных там может быть как число, так и строка. Просто рай для автоматизации!

Для себя выбрал решение брать значение из системной колонки _partition_value, приведенное к строке через toString. Пока каких-то проблем не поймали.

P.S. Что была за проблема? Я брал название партиции из системной колонки _partition_id. Во всех интеграциях операция отрабатывала нормально кроме одной. При этом никаких сообщений об ошибках не было. Данные просто не удалялись, так как партиции с именем _partition_id не существовало. Вот так по тихому, без ошибок, плодились задвоения данных.
ClickHouse Documentation Управление партициями и частями - ClickHouse Documentation Документация по PARTITION
More from @dataengineernews
  1. Sep 27, 20262️⃣3️⃣✖️0️⃣✖️2️⃣6️⃣ 🦀 Big Data дайджест · 22–23 сентября 2026 🍄 CLICKHOUSE • На этой нед…
  2. Sep 23, 2026Кабанчик приехал
  3. Sep 12, 2026LLMSQLQueryOperator В Airflow появился новый декоратор task.llm_sql, который генерирует SQ…
  4. Sep 2, 2026Кабанчик уже не тот https://t.me/alexgladkovblog/7608
  5. Aug 25, 2026Apache Airflow 3.3.0: Stateful Tasks and Multi-Language Support В Airflow 3.3 появился AIP…
  6. Aug 25, 2026Продолжая закрывать свой букдолг, дошел до книги Питхейна Стренгхольта «Архитектура медаль…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →