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
Открыть Карьерник в 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);

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации Apache Iceberg.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.