← 返回首页
feat: Support aggregation in odfv by HaoXuAI · Pull Request #5666 · feast-dev/feast · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

feat: Support aggregation in odfv#5666

Merged
ntkathole merged 12 commits into
masterfrom
aggregation-odfv
Oct 23, 2025
Merged

feat: Support aggregation in odfv#5666
ntkathole merged 12 commits into
masterfrom
aggregation-odfv

Conversation

Copy link
Copy Markdown
Collaborator

HaoXuAI commented Oct 15, 2025
edited
Loading

What this PR does / why we need it:

  1. The pr moved the backend dataframe module to parent level rather than local, as it doesn't have to be local abstraction, and spark can inherit it as well.
  2. Enable the aggregations config into the OnDemandFeatureView. When transforming the features, it can run either aggregations or feature_transform, not both. The reason is to make the the schema inference simple. But in future this can be redesigned to support both.

Which issue(s) this PR fixes:

Misc

hao-xu5 added 3 commits October 14, 2025 15:28
Signed-off-by: hao-xu5 <hxu44@apple.com>
Signed-off-by: hao-xu5 <hxu44@apple.com>
Signed-off-by: hao-xu5 <hxu44@apple.com>
HaoXuAI requested a review from a team as a code owner October 15, 2025 00:09
HaoXuAI changed the title Aggregation odfv feat: Support aggregation in odfv Oct 15, 2025
hao-xu5 and others added 2 commits October 20, 2025 09:39
Signed-off-by: hao-xu5 <hxu44@apple.com>
Comment thread sdk/python/feast/utils.py
if odfv.mode == "python":
# Apply aggregations if configured.
if odfv.aggregations:
if odfv.mode == "python":
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Currently if this is a python input, we don't have aggregation function to use OOTD, so it use the pandas Dataframe backend to aggregate. I think in long term we need to create a real time compute engine, where we support python native compute operations such as aggregations, filtering, joining etc.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

what does OOTD mean ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

OOTB :)

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Pull Request Overview

This PR adds aggregation support to OnDemandFeatureView (ODFV) and refactors the backend dataframe module structure. The implementation allows ODFVs to apply aggregations during online feature serving, either using aggregations or feature transformations (but not both). The backend modules are moved from the local directory to a parent-level backends directory to enable reusability across different compute engines like Spark.

Key Changes:

  • Moved backend dataframe modules from local/backends to parent-level backends directory
  • Added aggregation support to ODFV with _apply_aggregations_to_response utility function
  • Aggregations and transformations are mutually exclusive in ODFVs to simplify schema inference

Reviewed Changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file File Description
sdk/python/tests/unit/test_on_demand_feature_view_aggregation.py New test file covering aggregation functionality in Python and Pandas modes
sdk/python/feast/utils.py Added aggregation utility functions and integrated aggregation logic into ODFV transformation pipeline
sdk/python/feast/infra/compute_engines/local/nodes.py Updated import path for DataFrameBackend
sdk/python/feast/infra/compute_engines/local/feature_builder.py Updated import path for DataFrameBackend
sdk/python/feast/infra/compute_engines/local/compute.py Updated import paths for DataFrameBackend and BackendFactory
sdk/python/feast/infra/compute_engines/backends/polars_backend.py Updated import path for base DataFrameBackend
sdk/python/feast/infra/compute_engines/backends/pandas_backend.py Updated import path for base DataFrameBackend
sdk/python/feast/infra/compute_engines/backends/factory.py Updated import paths for backend classes

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread sdk/python/feast/utils.py Outdated Show resolved Hide resolved
Comment thread sdk/python/feast/utils.py Show resolved Hide resolved
Comment thread sdk/python/feast/utils.py Outdated Show resolved Hide resolved
HaoXuAI and others added 5 commits October 20, 2025 09:56
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: hao-xu5 <hxu44@apple.com>
Signed-off-by: hao-xu5 <hxu44@apple.com>
Signed-off-by: hao-xu5 <hxu44@apple.com>
Comment thread docs/reference/beta-on-demand-feature-view.md Show resolved Hide resolved
Signed-off-by: hao-xu5 <hxu44@apple.com>
Copy link
Copy Markdown
Member

ntkathole left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

Thank you

Hide details View details ntkathole merged commit 564e965 into master Oct 23, 2025
20 of 21 checks passed
franciscojavierarceo pushed a commit that referenced this pull request Oct 27, 2025
# [0.56.0](v0.55.0...v0.56.0) (2025-10-27) ### Bug Fixes * Add mode field to Transformation proto for proper serialization ([2390d2e](2390d2e)) * Date wise remote offline store historical data retrieval ([#5686](#5686)) ([949ba3d](949ba3d)) * Fix STRING type handling in on-demand feature views ([#5669](#5669)) ([dfbb743](dfbb743)) * Fixed torch install issue in CI ([366e5a8](366e5a8)) * ODFV not getting counted in resource count ([1d640b6](1d640b6)) * Skip tag updates if user do not have permissions ([#5673](#5673)) ([0a951ce](0a951ce)) ### Features * Add document of Go feature server. ([#5697](#5697)) ([cbd1dde](cbd1dde)) * Add flexible commandArgs support for complete Feast CLI control ([#5678](#5678)) ([6414924](6414924)) * Add HDFS as a feature registry ([#5655](#5655)) ([4c65872](4c65872)) * Add nodeSelector to service config ([#5675](#5675)) ([9728cde](9728cde)) * Add OTEL based observability to the Go Feature Server ([#5685](#5685)) ([f4afdad](f4afdad)) * Added health endpoint for the UI ([#5665](#5665)) ([3aec5d5](3aec5d5)) * Added kuberay support ([e0b698d](e0b698d)) * Added support for filtering multi-projects ([#5688](#5688)) ([eb0a86e](eb0a86e)) * Batch Embedding at scale for RAG with Ray ([cc2a46d](cc2a46d)) * Optimize SQL entity handling without creating temporary tables ([#5695](#5695)) ([aa2c838](aa2c838)) * Support aggregation in odfv ([#5666](#5666)) ([564e965](564e965)) * Support cache_mode for registries ([021e9ea](021e9ea))
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

Footer

© 2026 GitHub, Inc.