GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||
GeezerVison is showing github.com — fix: Preserve an unset aggregation time window across a proto round-trip by Rodrigo-Palma · Pull Request #6859 · feast-dev/feast Conversation
Contributor
What this PR does / why we need it
time_window = ( timedelta(days=0) if agg_proto.time_window.ToNanoseconds() == 0 else agg_proto.time_window.ToTimedelta() ) An absent That difference is load bearing. if getattr(agg, "time_window", None) is not None: raise ValueError(time_window_unsupported_error_message) So an on demand feature view written the way the existing tests write it: @on_demand_feature_view(..., aggregations=[Aggregation(column="trips", function="sum")], mode="python")works in process, and then fails on the first
FixRead the fields through TestingTwo tests in
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
|
There was an error while loading. Please reload this page.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@ ## master #6859 +/- ## ======================================= Coverage 47.65% 47.66% ======================================= Files 422 422 Lines 52396 52396 Branches 7606 7606 ======================================= + Hits 24970 24973 +3 Misses 25632 25632 + Partials 1794 1791 -3
... and 1 file with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
debce0a to
175e64e
Compare
175e64e to
cedef11
Compare
|
The lint-python failure is coming from master, not from this PR. detect-secrets flags Happy to send a one-line fix adding a |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Aggregation.__init__ types time_window and slide_interval as Optional and to_proto honours that: it only writes the Duration when the value is not None. from_proto tests the value instead of the presence, and an absent Duration also reports ToNanoseconds() == 0, so an aggregation defined without a window comes back with timedelta(0). That difference is load bearing. aggregation_specs_to_agg_ops rejects a windowed aggregation in online serving with 'if getattr(agg, "time_window", None) is not None', so an on demand feature view with a plain Aggregation(column=..., function=...) works in process and then fails with 'Time window aggregation is not supported in online serving.' on the first get_online_features after feast apply, whatever the registry. The same round-trip runs for StreamFeatureView. Read the field through HasField, which is available because both are google.protobuf.Duration message fields. Aggregation.__eq__ compares these two attributes, so this also stops a registry diff from seeing an unchanged feature view as modified. Signed-off-by: Rodrigo-Palma <[email protected]>
cedef11 to
1bd6944
Compare
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.