Delta Lake Time Travel: Querying Previous Table Versions
Who this is for:
Architecture / Concept Overview: Delta Lake Time Travel: Querying Previous Table Versions
%%{init: {"theme":"base","themeVariables":{"background":"#0B0E14","primaryTextColor":"#E0E6ED","lineColor":"#5D6470","darkMode":true,"primaryColor":"#2E4A4A","secondaryColor":"#374151","secondaryTextColor":"#E0E6ED","tertiaryColor":"#111827","tertiaryTextColor":"#E0E6ED","edgeLabelBackground":"#1f2937"}}}%%
flowchart LR
classDef source fill:#3F4B59,stroke:#9CA3AF,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef ingestion fill:#5A4B36,stroke:#C9A86B,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef processing fill:#535072,stroke:#8E82B4,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef storage fill:#2E4A4A,stroke:#5FAFA8,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef serving fill:#3D5550,stroke:#6BB7AA,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef governance fill:#5A3F52,stroke:#C28BB0,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
LOG[Transaction Log] -->|v0| F0[Files @ v0]
LOG -->|v1| F1[Files @ v1]
LOG -->|v2| F2[Files @ v2]
LOG -->|vN current| FN[Files @ vN]
FN -->|Default Read| READER[Query Engine]
F0 -->|VERSION AS OF 0| READER
LOG:::governance
F0:::source
F1:::source
F2:::source
FN:::storage
READER:::serving
*The transaction log records every version. Readers can target any historical version as long as the underlying files have not been vacuumed.*
%%{init: {"theme":"base","themeVariables":{"background":"#0B0E14","primaryTextColor":"#E0E6ED","lineColor":"#5D6470","darkMode":true,"primaryColor":"#2E4A4A","secondaryColor":"#374151","secondaryTextColor":"#E0E6ED","tertiaryColor":"#111827","tertiaryTextColor":"#E0E6ED","edgeLabelBackground":"#1f2937"}}}%%
graph TD
classDef source fill:#3F4B59,stroke:#9CA3AF,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef ingestion fill:#5A4B36,stroke:#C9A86B,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef processing fill:#535072,stroke:#8E82B4,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef storage fill:#2E4A4A,stroke:#5FAFA8,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef serving fill:#3D5550,stroke:#6BB7AA,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
classDef governance fill:#5A3F52,stroke:#C28BB0,stroke-width:2px,rx:8,ry:8,color:#E0E6ED
TT[Time Travel Use Cases] --> AUDIT[Regulatory Audit]
TT --> DEBUG[Debug Bad Data]
TT --> RESTORE[Disaster Recovery]
TT --> ML[Reproducible ML]
TT --> COMPARE[Version Comparison]
AUDIT:::governance
DEBUG:::processing
RESTORE:::ingestion
ML:::serving
COMPARE:::source
TT:::storage
*Time travel serves multiple operational use cases, from compliance auditing to ML experiment reproducibility.*
Key Terms
Prerequisites and Setup
- Databricks Runtime 13.3 LTS or later
- A Delta table with multiple committed versions
SELECTprivilege for time travel queries;MODIFYfor RESTORE operations- Sufficient retention period (
delta.deletedFileRetentionDuration) to cover your time travel window
Step-by-Step Implementation
Configuration Reference
| Property | Default | Description |
|---|---|---|
delta.logRetentionDuration | 30 days | How long commit JSON files are retained |
delta.deletedFileRetentionDuration | 7 days | Minimum age of files before VACUUM can remove them |
versionAsOf (read option) | — | Read a specific version number |
timestampAsOf (read option) | — | Read the version active at a given timestamp |