Skip to content

Commit d7f185f

Browse files
committed
Requested only features with values
Signed-off-by: jyejare <jyejare@redhat.com>
1 parent 9c07b0a commit d7f185f

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

sdk/python/feast/feature_store.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1869,39 +1869,31 @@ def retrieve_online_documents(
18691869
allow_cache=True,
18701870
hide_dummy_entity=False,
18711871
)
1872-
if features:
1872+
if feature_list:
18731873
feature_view_set = set()
1874-
for feature in features:
1875-
feature_view_name = feature.split(":")[0]
1874+
for _feature in feature_list:
1875+
feature_view_name = _feature.split(":")[0]
18761876
feature_view = self.get_feature_view(feature_view_name)
18771877
feature_view_set.add(feature_view.name)
18781878
if len(feature_view_set) > 1:
18791879
raise ValueError(
18801880
"Document retrieval only supports a single feature view."
18811881
)
1882-
requested_feature = None
1883-
requested_features = [
1884-
f.split(":")[1] for f in features if isinstance(f, str) and ":" in f
1885-
]
1886-
else:
18871882
requested_feature = (
18881883
feature.split(":")[1] if isinstance(feature, str) else feature
18891884
)
1890-
requested_features = [requested_feature] if requested_feature else []
1891-
1892-
requested_feature_view_name = (
1893-
feature.split(":")[0] if feature else list(feature_view_set)[0]
1894-
)
1885+
requested_features = [
1886+
f.split(":")[1] for f in feature_list if isinstance(f, str) and ":" in f
1887+
]
1888+
requested_feature_view_name = list(feature_view_set)[0]
18951889
for feature_view in available_feature_views:
18961890
if feature_view.name == requested_feature_view_name:
18971891
requested_feature_view = feature_view
18981892
break
1899-
if not requested_feature_view:
1893+
else:
19001894
raise ValueError(
19011895
f"Feature view {requested_feature_view} not found in the registry."
19021896
)
1903-
# Unnecessary code here a its overriding the requested_feature_view set from the above for loop
1904-
# requested_feature_view = available_feature_views[0]
19051897

19061898
provider = self._get_provider()
19071899
document_features = self._retrieve_from_online_store(
@@ -1945,7 +1937,6 @@ def retrieve_online_documents(
19451937
for _feature in _requested_features
19461938
if _feature in data
19471939
}
1948-
# TODO currently the requested 'features' list is not functioning as expected
19491940
utils._populate_result_rows_from_columnar(
19501941
online_features_response=online_features_response,
19511942
data=requested_features_data,

sdk/python/feast/infra/online_stores/postgres_online_store/postgres.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,11 @@ def retrieve_online_documents(
394394
f"Distance metric {distance_metric} is not supported. Supported distance metrics are {SUPPORTED_DISTANCE_METRICS_DICT.keys()}"
395395
)
396396

397+
if requested_features:
398+
required_feature_names = ", ".join(
399+
[feature for feature in requested_features]
400+
)
401+
397402
distance_metric_sql = SUPPORTED_DISTANCE_METRICS_DICT[distance_metric]
398403

399404
result: List[
@@ -415,7 +420,7 @@ def retrieve_online_documents(
415420
"""
416421
SELECT
417422
entity_key,
418-
feature_name,
423+
{feature_names},
419424
value,
420425
vector_value,
421426
vector_value {distance_metric_sql} %s::vector as distance,
@@ -427,6 +432,7 @@ def retrieve_online_documents(
427432
).format(
428433
distance_metric_sql=sql.SQL(distance_metric_sql),
429434
table_name=sql.Identifier(table_name),
435+
feature_names=required_feature_names,
430436
feature_name=sql.Literal(requested_feature),
431437
top_k=sql.Literal(top_k),
432438
),

sdk/python/tests/unit/online_store/test_online_retrieval.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,10 @@ def test_sqlite_get_online_documents() -> None:
718718
vector_length,
719719
)
720720
result = store.retrieve_online_documents(
721-
feature="document_embeddings:Embeddings", query=query_embedding, top_k=3
721+
feature="document_embeddings:item_id",
722+
query=query_embedding,
723+
top_k=3,
724+
features=["document_embeddings:Embeddings", "document_embeddings:distance"],
722725
).to_dict()
723726

724727
assert "Embeddings" in result

0 commit comments

Comments
 (0)