Skip to content

Commit d7d0c04

Browse files
fix serialization2
Signed-off-by: Miles Adkins <miles.adkins@snowflake.com>
1 parent 53aa4f7 commit d7d0c04

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

sdk/python/feast/infra/online_stores/snowflake.py

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,19 @@ def online_write_batch(
8888
if created_ts is not None:
8989
created_ts = _to_naive_utc(created_ts)
9090

91+
entity_key_serialization_version = (
92+
config.entity_key_serialization_version
93+
if config.entity_key_serialization_version
94+
else 2
95+
)
9196
for j, (feature_name, val) in enumerate(values.items()):
9297
df.loc[j, "entity_feature_key"] = serialize_entity_key(
93-
entity_key, entity_key_serialization_version=2
98+
entity_key,
99+
entity_key_serialization_version=entity_key_serialization_version,
94100
) + bytes(feature_name, encoding="utf-8")
95101
df.loc[j, "entity_key"] = serialize_entity_key(
96-
entity_key, entity_key_serialization_version=2
102+
entity_key,
103+
entity_key_serialization_version=entity_key_serialization_version,
97104
)
98105
df.loc[j, "feature_name"] = feature_name
99106
df.loc[j, "value"] = val.SerializeToString()
@@ -149,6 +156,20 @@ def online_read(
149156

150157
result: List[Tuple[Optional[datetime], Optional[Dict[str, ValueProto]]]] = []
151158

159+
entity_fetch_str = ",".join(
160+
[
161+
(
162+
"TO_BINARY("
163+
+ hexlify(
164+
serialize_entity_key(combo[0])
165+
+ bytes(combo[1], encoding="utf-8")
166+
).__str__()[1:]
167+
+ ")"
168+
)
169+
for combo in itertools.product(entity_keys, requested_features)
170+
]
171+
)
172+
152173
with get_snowflake_conn(config.online_store) as conn:
153174

154175
df = (
@@ -160,15 +181,21 @@ def online_read(
160181
FROM
161182
"{config.online_store.database}"."{config.online_store.schema_}"."[online-transient] {config.project}_{table.name}"
162183
WHERE
163-
"entity_feature_key" IN ({','.join([('TO_BINARY('+hexlify(serialize_entity_key(combo[0])+bytes(combo[1], encoding='utf-8')).__str__()[1:]+")") for combo in itertools.product(entity_keys,requested_features)])})
184+
"entity_feature_key" IN ({entity_fetch_str})
164185
""",
165186
)
166187
.fetch_pandas_all()
167188
)
168189

190+
entity_key_serialization_version = (
191+
config.entity_key_serialization_version
192+
if config.entity_key_serialization_version
193+
else 2
194+
)
169195
for entity_key in entity_keys:
170196
entity_key_bin = serialize_entity_key(
171-
entity_key, entity_key_serialization_version=2
197+
entity_key,
198+
entity_key_serialization_version=entity_key_serialization_version,
172199
)
173200
res = {}
174201
res_ts = None

0 commit comments

Comments
 (0)