но! Ducklake поддерживает версионность! А это значит их можно восстановить
memory D ATTACH 'ducklake:postgres:'
AS ducklake (
META_SECRET pg_metadata,
DATA_PATH 's3://corpsignals/ducklake',
METADATA_SCHEMA 'ducklake_catalog',
OVERRIDE_DATA_PATH true
);
memory D select count(*) from ducklake.intermediate.persons_all;
┌─────────────────┐
│ count_star() │
│ int64 │
├─────────────────┤
│ 10837423 │
│ (10.84 million) │
└─────────────────┘
memory D
memory D
memory D
memory D
memory D
memory D ATTACH 'ducklake:postgres:'
AS ducklake_before_refresh (
META_SECRET pg_metadata,
DATA_PATH 's3://corpsignals/ducklake',
METADATA_SCHEMA 'ducklake_catalog',
SNAPSHOT_TIME '2026-06-25 08:34:00'
);
memory D select count(*) from ducklake_before_refresh.intermediate.persons_all;
┌─────────────────┐
│ count_star() │
│ int64 │
├─────────────────┤
│ 16236012 │
│ (16.24 million) │
└─────────────────┘
вторая таблица - это прошлый snapshot. Видим, что там больше данных, и это праильно
команды ROLLBACK нет, поэтому делаем влоб
memory D CREATE OR REPLACE TABLE ducklake.intermediate.persons_all AS
SELECT * FROM ducklake_before_refresh.intermediate.persons_all;
memory D select count(*) from ducklake.intermediate.persons_all;
┌─────────────────┐
│ count_star() │
│ int64 │
├─────────────────┤
│ 16236012 │
│ (16.24 million) │
└─────────────────┘
PS: это может быть неинтересным, но это очень круто для сохранения данных при работе с ними. Рисковать можно больше