@@ -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