Skip to content

Commit ad32756

Browse files
authored
fix: Support historical feature retrieval with start_date/end_date in RemoteOfflineStore (#5703)
* Added start_date & end_date range for historical data retrieval from RemoteOfflineStore Signed-off-by: Aniket Paluskar <[email protected]> * Minor linting & reformatting changes Signed-off-by: Aniket Paluskar <[email protected]> * Fixed minor issue of empty df with only key as column being trated as entity_df in offline server Signed-off-by: Aniket Paluskar <[email protected]> * Removed unnecessary logic to create mock df Signed-off-by: Aniket Paluskar <[email protected]> * Minor linting & formatting changes Signed-off-by: Aniket Paluskar <[email protected]> --------- Signed-off-by: Aniket Paluskar <[email protected]>
1 parent 2a4b7aa commit ad32756

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

sdk/python/feast/infra/offline_stores/remote.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,16 @@ def get_table_column_names_and_types_from_data_source(
443443
return zip(table.column("name").to_pylist(), table.column("type").to_pylist())
444444

445445

446-
def _create_retrieval_metadata(feature_refs: List[str], entity_df: pd.DataFrame):
446+
def _create_retrieval_metadata(
447+
feature_refs: List[str], entity_df: Optional[pd.DataFrame] = None
448+
):
449+
if entity_df is None:
450+
return RetrievalMetadata(
451+
features=feature_refs,
452+
keys=[], # No entity keys when no entity_df provided
453+
min_event_timestamp=None,
454+
max_event_timestamp=None,
455+
)
447456
entity_schema = _get_entity_schema(
448457
entity_df=entity_df,
449458
)

sdk/python/feast/offline_server.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,9 @@ def get_historical_features(self, command: dict, key: Optional[str] = None):
431431
# Extract parameters from the internal flights dictionary
432432
entity_df_value = self.flights[key]
433433
entity_df = pa.Table.to_pandas(entity_df_value)
434+
# Check if this is a mock/empty table (contains only 'key' column)
435+
if len(entity_df.columns) == 1 and "key" in entity_df.columns:
436+
entity_df = None
434437

435438
feature_view_names = command["feature_view_names"]
436439
name_aliases = command["name_aliases"]

0 commit comments

Comments
 (0)