Timelaketimelake
DocsBenchmarksRoadmapSpecContribute
Apache 2.0 ·
Roadmap

DoneIn progressPlanned

Tables and storage

Done:1. Iceberg tablesDone:2. CommitsDone:3. Object-store catalogIn progress:4. Time-series table contractIn progress:5. File layout and encodingsIn progress:6. Last-value indexDone:7. One-request table state and version checksDone:8. Table format versions and upgradesDone:9. SettingsPlanned:10. Supplemental timestamps

Writing

Done:11. AppendsDone:12. Late data and dedup on readDone:13. Writes from WebAssemblyPlanned:14. Hot tier and seconds-fresh readsPlanned:15. BackfillIn progress:16. Import and migrationPlanned:17. DeletesPlanned:18. GDPR erasure

Maintenance

Done:19. CompactionIn progress:20. Maintenance runs, retention and expiry

Reading

In progress:21. Timelake readerDone:22. Block cacheDone:23. Filter pushdownDone:24. Pruning with long IN listsDone:25. Newest-first scansDone:26. Scans in series orderDone:27. Materialized rollups

SQL functions

In progress:28. Function libraryDone:29. Time buckets and gap fillingDone:30. Signal aggregatesDone:31. Downsampling with m4

Integrations

Planned:32. REST catalogPlanned:33. DuckDB extensionPlanned:34. Snowflake connectionPlanned:35. Multitenancy

Services

Planned:36. Ingestion and rulesPlanned:37. Data to eventsPlanned:38. Static read modelsPlanned:39. Computed metricsPlanned:40. Agent access with permission setsPlanned:41. Device syncPlanned:42. Edge gatewayPlanned:43. Server mode

Benchmarks

In progress:44. Benchmark harness: timebenchIn progress:45. Industrial IoT benchmarkPlanned:46. Agent benchmark

Background

ArchitectureDeployment and cost modelEmbedded engine: DataFusionLandscape and positioningLicense and open corePurpose and requirementsReleases
TimelaketimelakeThe open time-series lakehouse.
v0 · Apache 2.0 · Contribute · GitHubBuilt on Apache Arrow, Apache DataFusion, Apache Parquet, and Apache Iceberg.
DocsBenchmarksRoadmapSpecContribute

Spec 26 · Reading

Scans in series order

DoneUpdated 2026-10-19View on GitHub
Versions
0.7.0, unreleased
Roadmap
Time-series SQL
Related
12. Late data and dedup on read, 21. Timelake reader, 30. Signal aggregates

Summary

Queries that work through each series in time order (signal aggregates, and windows partitioned by the series key and ordered by time) read files so that each series arrives whole and in order: files in time order, each scan partition a contiguous stretch of time, and only the files that overlap merged in series order. No repartitioning or sorting.

Design

  • Signal and gap aggregates (spec 30) need it for correctness: no partition may have readings of a series inside another partition's run of it. Files that must be merged (copies with dedup on read; without, files that overlap on (series…, time) or aren't sorted) are merged in series order with every file of the time they span (closed under overlap; the dedup operator, keeping every row without dedup), and the files before and after that time are read as they are, files in time order, each partition a contiguous stretch. DataFusion 54's work stealing between file partitions is turned off for these scans with preserve_order.
    • Setting series-order (named time-weighted-mean in 0.7.0): auto, segments (copies only; overlaps are an error), merge (every file).
    • 0.7.0 spread files over partitions by size and merged only tables with dedup off, so a partition's run spanned days other partitions held, and GROUP BY tag over a month failed with "runs that overlap in time".
    • Measured alternative: rewriting to windows (lead per group in time order): hourly means of 370 M IIoT readings 550 s and 20 GB peak, against 2.0 s with segments.
  • Windows partitioned by the series key and ordered by time (lead(…) OVER (PARTITION BY <series key> ORDER BY time)): the scan declares the series hash partitioning and the time order, so DataFusion neither repartitions nor sorts. Setting window-series-order (auto, true, false). auto merges when the files are in one time partition: IIoT gaps 260 → 215 ms, time-above-limit 396 → 327 ms. Over a week of files merging is slower (2.0 → 3.0 s), so auto leaves those.

Open questions and issues

None open.

History

  • 2026-10-18: series order for time_weighted_mean (0.7.0)
  • 2026-10-19: time-ordered stretches per partition, merging only the span that needs it; windows in series order; moved from SPEC.md (specs 20 and 22) into this spec when the specs were regrouped one per feature.