@@ -252,21 +252,21 @@ def _build_conditioned_feature_store_request(self, aggregation_element, pending=
252252 if not initialized_attributes .get (array_attribute_name , 0 ) == expected_time :
253253 initialized_attributes [array_attribute_name ] = expected_time
254254 init_expression = f'{ array_attribute_name } =if_else(({ get_array_time_expr } <{ expected_time_expr } ),' \
255- f"init_array({ bucket .total_number_of_buckets } ,'double'," \
256- f'{ aggregation_value .get_default_value () } ),{ array_attribute_name } )'
255+ f"init_array({ bucket .total_number_of_buckets } ,'double'," \
256+ f'{ aggregation_value .default_value } ),{ array_attribute_name } )'
257257 expressions .append (init_expression )
258258
259259 arr_at_index = f'{ array_attribute_name } [{ index_to_update } ]'
260260 update_array_expression = f'{ arr_at_index } =if_else(({ get_array_time_expr } >{ expected_time_expr } ),{ arr_at_index } ,' \
261- f'{ self . _get_update_expression_by_aggregation (arr_at_index , aggregation_value )} )'
261+ f'{ aggregation_value . get_update_expression (arr_at_index )} )'
262262
263263 expressions .append (update_array_expression )
264264
265265 # Separating time attribute updates, so that they will be executed in the end and only once per feature name.
266266 if array_time_attribute_name not in times_update_expressions :
267267 times_update_expressions [array_time_attribute_name ] = f'{ array_time_attribute_name } =' \
268- f'if_else(({ get_array_time_expr } <{ expected_time_expr } ),' \
269- f'{ expected_time_expr } ,{ array_time_attribute_name } )'
268+ f'if_else(({ get_array_time_expr } <{ expected_time_expr } ),' \
269+ f'{ expected_time_expr } ,{ array_time_attribute_name } )'
270270
271271 expressions .extend (times_update_expressions .values ())
272272
@@ -304,7 +304,7 @@ def _build_simplified_feature_store_request(self, aggregation_element):
304304 if not initialized_attributes .get (array_attribute_name , 0 ) == expected_time :
305305 initialized_attributes [array_attribute_name ] = expected_time
306306 expressions .append (f"{ array_attribute_name } =init_array({ bucket .total_number_of_buckets } ,'double',"
307- f'{ aggregation_value .get_default_value () } )' )
307+ f'{ aggregation_value .default_value } )' )
308308 if array_time_attribute_name not in times_update_expressions :
309309 times_update_expressions [array_time_attribute_name ] = \
310310 f'{ array_time_attribute_name } ={ expected_time_expr } '
@@ -313,8 +313,7 @@ def _build_simplified_feature_store_request(self, aggregation_element):
313313 # Updating the specific cells
314314 if cached_time <= expected_time :
315315 arr_at_index = f'{ array_attribute_name } [{ index_to_update } ]'
316- expressions .append (
317- f'{ arr_at_index } ={ self ._get_update_expression_by_aggregation (arr_at_index , aggregation_value )} ' )
316+ expressions .append (f'{ arr_at_index } ={ aggregation_value .get_update_expression (arr_at_index )} ' )
318317
319318 # Separating time attribute updates, so that they will be executed in the end and only once per feature name.
320319 expressions .extend (times_update_expressions .values ())
@@ -325,20 +324,6 @@ def _build_simplified_feature_store_request(self, aggregation_element):
325324 aggregation_element .aggregation_buckets [name ].storage_specific_cache [attribute_name ] = new_time
326325 return expressions , pending_updates
327326
328- @staticmethod
329- def _get_update_expression_by_aggregation (old , aggregation ):
330- value = aggregation .get_value ()[1 ]
331- if aggregation .aggregation == 'max' :
332- return f'max({ old } , { value } )'
333- elif aggregation .aggregation == 'min' :
334- return f'min({ old } , { value } )'
335- elif aggregation .aggregation == 'last' :
336- return f'{ value } '
337- elif aggregation .aggregation == 'first' :
338- return f'if_else(({ old } == { aggregation .get_default_value ()} ), { value } , { old } )'
339- else :
340- return f'{ old } +{ value } '
341-
342327 @staticmethod
343328 def _convert_python_obj_to_expression_value (value ):
344329 if isinstance (value , str ):
0 commit comments