feat: add TaurusX CPM CPC and CPI
This commit is contained in:
+22
-8
@@ -91,6 +91,10 @@ def build_dataset(
|
||||
for api_row in api_rows:
|
||||
campaign_name = str(api_row.get("campaign_name") or "").strip()
|
||||
country = str(api_row.get("country") or "").strip().upper()
|
||||
impressions = int(float(api_row.get("impressions") or 0))
|
||||
clicks = int(float(api_row.get("clicks") or 0))
|
||||
conversions = int(float(api_row.get("conversions") or 0))
|
||||
cost = round(float(api_row.get("cost") or 0), 4)
|
||||
records.append(
|
||||
{
|
||||
"date": str(api_row.get("date") or ""),
|
||||
@@ -98,14 +102,21 @@ def build_dataset(
|
||||
"campaign_name": campaign_name,
|
||||
"pkg": extract_pkg(campaign_name, country),
|
||||
"country": country,
|
||||
"impressions": int(float(api_row.get("impressions") or 0)),
|
||||
"clicks": int(float(api_row.get("clicks") or 0)),
|
||||
"conversions": int(float(api_row.get("conversions") or 0)),
|
||||
"cost": round(float(api_row.get("cost") or 0), 4),
|
||||
"impressions": impressions,
|
||||
"clicks": clicks,
|
||||
"conversions": conversions,
|
||||
"cost": cost,
|
||||
"cpm": round(cost / impressions * 1000, 6) if impressions else None,
|
||||
"cpc": round(cost / clicks, 6) if clicks else None,
|
||||
"cpi": round(cost / conversions, 6) if conversions else None,
|
||||
}
|
||||
)
|
||||
|
||||
records.sort(key=lambda row: (row["date"], row["cost"], row["clicks"]), reverse=True)
|
||||
total_impressions = sum(row["impressions"] for row in records)
|
||||
total_clicks = sum(row["clicks"] for row in records)
|
||||
total_conversions = sum(row["conversions"] for row in records)
|
||||
total_cost = round(sum(row["cost"] for row in records), 4)
|
||||
fetched_at = datetime.now(timezone(timedelta(hours=8))).isoformat(timespec="seconds")
|
||||
return {
|
||||
"meta": {
|
||||
@@ -119,10 +130,13 @@ def build_dataset(
|
||||
"pkg_country_count": len({(row["pkg"].casefold(), row["country"]) for row in records if row["pkg"]}),
|
||||
"countries": len({row["country"] for row in records if row["country"]}),
|
||||
"unparsed_pkg_rows": sum(not row["pkg"] for row in records),
|
||||
"impressions": sum(row["impressions"] for row in records),
|
||||
"clicks": sum(row["clicks"] for row in records),
|
||||
"conversions": sum(row["conversions"] for row in records),
|
||||
"cost": round(sum(row["cost"] for row in records), 4),
|
||||
"impressions": total_impressions,
|
||||
"clicks": total_clicks,
|
||||
"conversions": total_conversions,
|
||||
"cost": total_cost,
|
||||
"cpm": round(total_cost / total_impressions * 1000, 6) if total_impressions else None,
|
||||
"cpc": round(total_cost / total_clicks, 6) if total_clicks else None,
|
||||
"cpi": round(total_cost / total_conversions, 6) if total_conversions else None,
|
||||
},
|
||||
"records": records,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user