clean metrics

This commit is contained in:
MuslemRahimi 2024-10-21 17:21:49 +02:00
parent bd47a3e7e8
commit c1aa345605

View File

@ -333,34 +333,46 @@ def run(symbol):
dimensions_dict = ast.literal_eval(dimensions_str) if isinstance(dimensions_str, str) else dimensions_str dimensions_dict = ast.literal_eval(dimensions_str) if isinstance(dimensions_str, str) else dimensions_str
except (ValueError, SyntaxError): except (ValueError, SyntaxError):
dimensions_dict = {} dimensions_dict = {}
#print(dimensions_dict)
for column_name in [ for column_name in [
"srt:StatementGeographicalAxis", "srt:StatementGeographicalAxis",
"us-gaap:StatementBusinessSegmentsAxis", "us-gaap:StatementBusinessSegmentsAxis",
"srt:ProductOrServiceAxis", "srt:ProductOrServiceAxis",
]: ]:
product_dimension = dimensions_dict.get(column_name) if isinstance(dimensions_dict, dict) else None product_dimension = dimensions_dict.get(column_name) if isinstance(dimensions_dict, dict) else None
# Check if the namespace is 'us-gaap' and product_dimension is valid # Check if the namespace is 'us-gaap' and product_dimension is valid
if row["namespace"] == "us-gaap" and product_dimension is not None and ( if row["namespace"] == "us-gaap" and product_dimension is not None and (
product_dimension.startswith(symbol.lower() + ":") or product_dimension.startswith(symbol.lower() + ":") or
product_dimension.startswith("country" + ":") product_dimension.startswith("country" + ":") or
product_dimension.startswith("us-gaap"+":")
): ):
replacements = {
"Member": "",
"VideoGameAccessories": "HardwareAndAccessories",
"NewVideoGameHardware": "HardwareAndAccessories",
"NewVideoGameSoftware": "Software",
f"{symbol.lower()}:": "",
"us-gaap:": "",
"SegmentMember": "",
}
name = product_dimension
for old, new in replacements.items():
name = name.replace(old, new)
print(name,column_name)
# Determine the target list and the name transformation logic # Determine the target list and the name transformation logic
if symbol in ['NVDA','AAPL','GME']: if symbol in ['META','NVDA','AAPL','GME']:
column_list = ["srt:ProductOrServiceAxis"] column_list = ["srt:ProductOrServiceAxis"]
else: else:
column_list = ["srt:ProductOrServiceAxis", "us-gaap:StatementBusinessSegmentsAxis"] column_list = ["srt:ProductOrServiceAxis", "us-gaap:StatementBusinessSegmentsAxis"]
if column_name in column_list: if column_name in column_list:
name = product_dimension.replace("Member", "").replace(
"VideoGameAccessories", "HardwareAndAccessories"
).replace("NewVideoGameHardware", "HardwareAndAccessories").replace(
"NewVideoGameSoftware", "Software"
).replace(f"{symbol.lower()}:", "")
revenue_sources.append({"name": name, "value": row["value"], "date": row["end_date"]}) revenue_sources.append({"name": name, "value": row["value"], "date": row["end_date"]})
else: else:
name = product_dimension.replace("SegmentMember", "").replace("Member", "").replace(f"{symbol.lower()}:", "")
geography_sources.append({"name": name, "value": row["value"], "date": row["end_date"]}) geography_sources.append({"name": name, "value": row["value"], "date": row["end_date"]})
@ -368,6 +380,7 @@ def run(symbol):
except Exception as e: except Exception as e:
print(e) print(e)
print(revenue_sources)
revenue_dataset = generate_revenue_dataset(revenue_sources) revenue_dataset = generate_revenue_dataset(revenue_sources)
geographic_dataset = generate_geography_dataset(geography_sources) geographic_dataset = generate_geography_dataset(geography_sources)
final_dataset = {'revenue': revenue_dataset, 'geographic': geographic_dataset} final_dataset = {'revenue': revenue_dataset, 'geographic': geographic_dataset}
@ -384,6 +397,6 @@ if __name__ == "__main__":
run('GME', custom_order) run('GME', custom_order)
''' '''
for symbol in ['TSLA']: #['TSLA','NVDA','AAPL','GME']: for symbol in ['META']: #['TSLA','NVDA','AAPL','GME']:
run(symbol) run(symbol)