Skip to content

Commit 9646f03

Browse files
chore: Adding additional dummy entity field test (#4602)
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
1 parent 10ce2aa commit 9646f03

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

sdk/python/feast/feature_view.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@
4949
name=DUMMY_ENTITY_NAME,
5050
join_keys=[DUMMY_ENTITY_ID],
5151
)
52+
DUMMY_ENTITY_FIELD = Field(
53+
name=DUMMY_ENTITY_ID,
54+
dtype=from_value_type(ValueType.STRING),
55+
)
5256

5357

5458
@typechecked

sdk/python/tests/unit/test_on_demand_python_transformation.py

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,20 @@
1717
RequestSource,
1818
)
1919
from feast.driver_test_data import create_driver_hourly_stats_df
20+
from feast.feature_view import DUMMY_ENTITY_FIELD
2021
from feast.field import Field
2122
from feast.infra.online_stores.sqlite import SqliteOnlineStoreConfig
2223
from feast.on_demand_feature_view import on_demand_feature_view
23-
from feast.types import Array, Bool, Float32, Float64, Int64, String
24+
from feast.types import (
25+
Array,
26+
Bool,
27+
Float32,
28+
Float64,
29+
Int64,
30+
String,
31+
ValueType,
32+
from_value_type,
33+
)
2434

2535

2636
class TestOnDemandPythonTransformation(unittest.TestCase):
@@ -51,7 +61,9 @@ def setUp(self):
5161
path=driver_stats_path, allow_truncated_timestamps=True
5262
)
5363

54-
driver = Entity(name="driver", join_keys=["driver_id"])
64+
driver = Entity(
65+
name="driver", join_keys=["driver_id"], value_type=ValueType.INT64
66+
)
5567

5668
driver_stats_source = FileSource(
5769
name="driver_hourly_stats_source",
@@ -73,6 +85,19 @@ def setUp(self):
7385
source=driver_stats_source,
7486
)
7587

88+
driver_stats_entity_less_fv = FeatureView(
89+
name="driver_hourly_stats_no_entity",
90+
entities=[],
91+
ttl=timedelta(days=0),
92+
schema=[
93+
Field(name="conv_rate", dtype=Float32),
94+
Field(name="acc_rate", dtype=Float32),
95+
Field(name="avg_daily_trips", dtype=Int64),
96+
],
97+
online=True,
98+
source=driver_stats_source,
99+
)
100+
76101
@on_demand_feature_view(
77102
sources=[driver_stats_fv],
78103
schema=[Field(name="conv_rate_plus_acc_pandas", dtype=Float64)],
@@ -151,6 +176,7 @@ def python_singleton_view(inputs: dict[str, Any]) -> dict[str, Any]:
151176
pandas_view,
152177
python_view,
153178
python_singleton_view,
179+
driver_stats_entity_less_fv,
154180
]
155181
)
156182

@@ -162,13 +188,19 @@ def python_singleton_view(inputs: dict[str, Any]) -> dict[str, Any]:
162188
pandas_view,
163189
python_view,
164190
python_demo_view,
191+
driver_stats_entity_less_fv,
165192
]
166193
)
167194
self.store.write_to_online_store(
168195
feature_view_name="driver_hourly_stats", df=driver_df
169196
)
170-
assert len(self.store.list_all_feature_views()) == 4
171-
assert len(self.store.list_feature_views()) == 1
197+
assert driver_stats_fv.entity_columns == [
198+
Field(name=driver.join_key, dtype=from_value_type(driver.value_type))
199+
]
200+
assert driver_stats_entity_less_fv.entity_columns == [DUMMY_ENTITY_FIELD]
201+
202+
assert len(self.store.list_all_feature_views()) == 5
203+
assert len(self.store.list_feature_views()) == 2
172204
assert len(self.store.list_on_demand_feature_views()) == 3
173205
assert len(self.store.list_stream_feature_views()) == 0
174206

0 commit comments

Comments
 (0)