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 31 · SQL functions

Downsampling with m4

DoneUpdated 2026-10-18View on GitHub
Versions
0.7.0
Roadmap
Time-series SQL
Related
27. Materialized rollups, 28. Function library

Summary

m4(time, value) returns a group's first, smallest, largest and last points, a mergeable state that rollups store and merge for wider buckets. After Apache IoTDB's time-window M4.

Design

m4(time, value) is an aggregate returning a group's first, smallest, largest and last points as a list of {time, value} structs in time order, repeats removed (after Apache IoTDB's time-window M4). Ties are broken by fixed orders (time then value for first and last, value then time for the extremes), so the result doesn't depend on row order. The points merge: m4 over several groups' points equals m4 over their rows, so the list is also the aggregate's state, m4(points) merges lists, a rollup stores m4 as a list column, and routing answers wider buckets by merging stored lists. Columnar group accumulator. IIoT small, hourly points per tag over 30 days: 2.03 s from the readings (3.5 s with a per-group accumulator), 0.51 s from a 1-minute rollup; min, max, first_value and last_value alone (no times for the extremes) take 1.76 s.

Open questions and issues

None open.

History

  • 2026-10-18: built (#73)
  • 2026-10-19: moved from SPEC.md into its own spec.
  • 2026-10-19: was spec 23; specs regrouped one per feature, with milestones on the roadmap.