@@ -96,6 +96,7 @@ def _make_cost_data(self, results):
9696 "resource" : result .get ("resource" , "" ),
9797 "billed_date" : result ["billed_date" ],
9898 "additional_info" : result .get ("additional_info" , {}),
99+ "data" : self ._convert_data_values (result .get ("data" , {})),
99100 "tags" : result .get ("tags" , {}),
100101 }
101102
@@ -129,17 +130,13 @@ def _change_result_by_field_mapper(self, result):
129130 result [origin_field ] = result [actual_field ]
130131 del result [actual_field ]
131132
132- if origin_field == "additional_info" :
133- additional_info = {}
134- for (
135- origin_additional_field ,
136- actual_additional_field ,
137- ) in actual_field .items ():
138- additional_info [origin_additional_field ] = result [
139- actual_additional_field
140- ]
141- del result [actual_additional_field ]
142- result [origin_field ] = additional_info
133+ if origin_field in ("additional_info" , "data" ):
134+ mapped_dict = {}
135+ for mapped_key , csv_column in actual_field .items ():
136+ if csv_column in result :
137+ mapped_dict [mapped_key ] = result [csv_column ]
138+ del result [csv_column ]
139+ result [origin_field ] = mapped_dict
143140
144141 return result
145142
@@ -221,6 +218,16 @@ def _check_required_fields(result):
221218 if field not in result :
222219 raise ERROR_REQUIRED_PARAMETER (key = field )
223220
221+ @staticmethod
222+ def _convert_data_values (raw_data ):
223+ converted = {}
224+ for key , value in raw_data .items ():
225+ try :
226+ converted [key ] = float (value ) if value else 0.0
227+ except (ValueError , TypeError ):
228+ converted [key ] = value
229+ return converted
230+
224231 def _set_type_mapper (self , result ):
225232 # Not Implemented
226233 if "additional_info" in self .type_mapper :
0 commit comments