There was a problem hiding this comment.
This PR implements tiling support for efficient time-windowed aggregations in Feast's streaming feature views. The implementation uses a sawtooth window tiling algorithm with intermediate representations (IRs) to enable correct merging of holistic aggregations (avg, std, var) while providing performance benefits for streaming scenarios.
Key Changes:
Copilot reviewed 17 out of 17 changed files in this pull request and generated 23 comments.
Show a summary per file| sdk/python/feast/infra/tiling/base.py | Defines IR metadata structures for algebraic and holistic aggregations |
| sdk/python/feast/infra/tiling/orchestrator.py | Implements cumulative tile generation using sawtooth window algorithm |
| sdk/python/feast/infra/tiling/tile_subtraction.py | Converts cumulative tiles to windowed aggregations via tile subtraction |
| sdk/python/feast/infra/tiling/__init__.py | Exports tiling module public API |
| sdk/python/feast/stream_feature_view.py | Adds tiling configuration to StreamFeatureView class |
| protos/feast/core/StreamFeatureView.proto | Adds protobuf fields for tiling configuration |
| sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py | Generated protobuf Python code for tiling fields |
| sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi | Generated protobuf type stubs for tiling fields |
| sdk/python/feast/infra/compute_engines/spark/nodes.py | Implements tiling execution path for Spark engine |
| sdk/python/feast/infra/compute_engines/spark/feature_builder.py | Passes tiling config to Spark aggregation nodes |
| sdk/python/feast/infra/compute_engines/ray/nodes.py | Implements tiling execution path for Ray engine |
| sdk/python/feast/infra/compute_engines/ray/feature_builder.py | Passes tiling config to Ray aggregation nodes |
| sdk/python/feast/utils.py | Extracts input columns from aggregations for feature views |
| sdk/python/tests/unit/infra/compute_engines/spark/test_nodes.py | Updates test to pass required spark_session parameter |
| docs/getting-started/concepts/tiling.md | Comprehensive documentation on tiling concepts and usage |
| docs/getting-started/concepts/stream-feature-view.md | Adds reference to tiling documentation |
| docs/getting-started/concepts/README.md | Adds tiling.md to concepts index |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Sorry, something went wrong.
| @@ -0,0 +1,27 @@ | |||
| """ | |||
| Tiling for efficient time-windowed aggregations. | |||
There was a problem hiding this comment.
Really cool. Is there a way to merge with the Aggregation interface? Or something like
aggregation/
Sorry, something went wrong.
There was a problem hiding this comment.
yea, this make sense. Changed now to:
Sorry, something went wrong.
There was a problem hiding this comment.
Happy Thanksgiving! 🚀🚀🚀
Sorry, something went wrong.
What this PR does / why we need it:
This PR implements tiling for computing time-windowed aggregations efficiently by pre-aggregating data into small, time-bucketed units (tiles) that can be reused across multiple queries. Instead of scanning all raw events for each window, it:
Sawtooth Window Tiling
Enable Tiling in StreamFeatureView
Architecture