Iceberg time travel на собеседовании Data Engineer
Проверь себя · 1/3разбор после ответа
Вы сортируете товары по величине скидки
discount по убыванию. Поле discount может быть NULL (скидки нет). Чтобы товары без скидки всегда оказывались внизу независимо от настроек СУБД, какой вариант сортировки выбрать?Snapshots
Каждое write — новый snapshot. Immutable.
SELECT * FROM iceberg.events.snapshots;
-- shows snapshot_id, parent, operation, ts.Time travel queries
-- by snapshot ID
SELECT * FROM events VERSION AS OF 1234567;
-- by timestamp
SELECT * FROM events FOR TIMESTAMP AS OF '2026-04-01 12:00:00';Read data «as it was».
Branches и tags
Iceberg 1.0+. Like Git branches для data.
Branch. Mutable. Dev / staging.
ALTER TABLE events CREATE BRANCH dev_branch;
-- write to branch
INSERT INTO events.branch_dev_branch VALUES (...);Main untouched. Test changes safely.
Tag. Immutable named snapshot.
ALTER TABLE events CREATE TAG audit_2026_05_07
AS OF VERSION 1234567
RETAIN 365 DAYS;Useful для compliance, regulatory snapshots.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Применения
Audit / compliance. «Show records на 2026-04-01 для regulator».
ML training reproducibility. Train on specific dataset version.
Debugging. Compare current vs past — what changed?
Rollback. Revert табличку до specific snapshot:
CALL iceberg.system.rollback_to_snapshot('events', 1234567);Связанные темы
- Iceberg deep для DE
- Spark Iceberg для DE
- Lakehouse Iceberg Delta для DE
- Schema evolution для DE
- Подготовка к собесу Data Engineer
FAQ
Это официальная информация?
Нет. Статья основана на документации Apache Iceberg.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.