diff --git a/build_data.py b/build_data.py index 7b2df35..156682b 100644 --- a/build_data.py +++ b/build_data.py @@ -261,19 +261,160 @@ def aggregate(records: list[dict[str, str]], counters: dict[str, int], source: P } +def parse_mtg1013(source: Path, payload: dict[str, Any]) -> dict[str, Any]: + """Parse MTG performance rows and relate them to the order coverage keys.""" + import csv + from decimal import Decimal, InvalidOperation + + if not source.is_file(): + raise FileNotFoundError(f"MTG CSV not found: {source}") + + required = { + "Adping ID", + "Pkg Name", + "Target Geo", + "Valid Clicks", + "Postback Installs", + "Revenue", + "Cost", + } + coverage_by_key = { + (row["pkg"].casefold(), row["country"]): row for row in payload["records"] + } + + def number(value: Any, field: str, line: int) -> Decimal: + try: + return Decimal(clean_text(value) or "0") + except InvalidOperation as exc: + raise ValueError(f"Invalid {field} on CSV line {line}: {value}") from exc + + def decimal_value(value: Decimal, places: str = "0.0001") -> float: + return float(value.quantize(Decimal(places))) + + records: list[dict[str, Any]] = [] + with source.open("r", encoding="utf-8-sig", newline="") as handle: + reader = csv.DictReader(handle) + missing = required.difference(reader.fieldnames or []) + if missing: + raise ValueError(f"Missing MTG CSV columns: {', '.join(sorted(missing))}") + for line, row in enumerate(reader, start=2): + adpingid = clean_text(row["Adping ID"]) + pkg = clean_text(row["Pkg Name"]) + country = clean_text(row["Target Geo"]).upper() + if not adpingid or not pkg or not country: + raise ValueError(f"Incomplete MTG CSV key on line {line}") + if re.match(r"^https?://", pkg, flags=re.IGNORECASE): + raise ValueError(f"Invalid MTG CSV pkg URL on line {line}") + + clicks = int(number(row["Valid Clicks"], "Valid Clicks", line)) + installs = int(number(row["Postback Installs"], "Postback Installs", line)) + revenue = number(row["Revenue"], "Revenue", line) + cost = number(row["Cost"], "Cost", line) + key = (pkg.casefold(), country) + coverage = coverage_by_key.get(key) + records.append( + { + "adpingid": adpingid, + "pkg": pkg, + "country": country, + "valid_clicks": clicks, + "installs": installs, + "revenue": decimal_value(revenue), + "cost": decimal_value(cost), + "profit": decimal_value(revenue - cost), + "roas": round(float(revenue / cost), 4) if cost else None, + "install_rate": round(installs / clicks, 4) if clicks else None, + "order_match": coverage is not None, + "adpingid_match": bool(coverage and adpingid in coverage["adpingids"]), + "target_present": bool(coverage and coverage["target_present"]), + "missing_target": bool(coverage and coverage["missing_target"]), + } + ) + + records.sort(key=lambda row: (-row["cost"], -row["valid_clicks"], row["adpingid"])) + total_clicks = sum(row["valid_clicks"] for row in records) + total_installs = sum(row["installs"] for row in records) + total_revenue = sum(Decimal(str(row["revenue"])) for row in records) + total_cost = sum(Decimal(str(row["cost"])) for row in records) + + by_key: dict[tuple[str, str], list[dict[str, Any]]] = defaultdict(list) + by_country: dict[str, list[dict[str, Any]]] = defaultdict(list) + for row in records: + by_key[(row["pkg"].casefold(), row["country"])].append(row) + by_country[row["country"]].append(row) + for key, rows in by_key.items(): + coverage = coverage_by_key.get(key) + if not coverage: + continue + coverage["mtg1013"] = { + "adpingids": sort_adpingids({row["adpingid"] for row in rows}), + "valid_clicks": sum(row["valid_clicks"] for row in rows), + "installs": sum(row["installs"] for row in rows), + "revenue": round(sum(row["revenue"] for row in rows), 4), + "cost": round(sum(row["cost"] for row in rows), 4), + } + + country_summary = [] + for country, rows in by_country.items(): + revenue = sum(row["revenue"] for row in rows) + cost = sum(row["cost"] for row in rows) + country_summary.append( + { + "country": country, + "rows": len(rows), + "valid_clicks": sum(row["valid_clicks"] for row in rows), + "installs": sum(row["installs"] for row in rows), + "revenue": round(revenue, 4), + "cost": round(cost, 4), + "profit": round(revenue - cost, 4), + "roas": round(revenue / cost, 4) if cost else None, + } + ) + country_summary.sort(key=lambda row: (-row["cost"], row["country"])) + + return { + "meta": { + "source": source.name, + "rows": len(records), + "unique_keys": len(by_key), + "unique_adpingids": len({row["adpingid"] for row in records}), + "matched_order_rows": sum(row["order_match"] for row in records), + "matched_adpingid_rows": sum(row["adpingid_match"] for row in records), + "unmatched_order_rows": sum(not row["order_match"] for row in records), + "valid_clicks": total_clicks, + "installs": total_installs, + "revenue": decimal_value(total_revenue), + "cost": decimal_value(total_cost), + "profit": decimal_value(total_revenue - total_cost), + "roas": round(float(total_revenue / total_cost), 4) if total_cost else None, + "install_rate": round(total_installs / total_clicks, 4) if total_clicks else None, + }, + "country_summary": country_summary, + "records": records, + } + + def main() -> None: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--source", type=Path, default=DEFAULT_SOURCE, help="Source XLSX workbook") + parser.add_argument( + "--mtg-source", + type=Path, + default=DEFAULT_SOURCE.with_name("mtg1013.csv"), + help="MTG 10/13 performance CSV", + ) parser.add_argument("--output", type=Path, default=Path(__file__).with_name("data.json"), help="Output JSON") args = parser.parse_args() records, counters = parse_workbook(args.source) payload = aggregate(records, counters, args.source) + payload["mtg1013"] = parse_mtg1013(args.mtg_source, payload) args.output.parent.mkdir(parents=True, exist_ok=True) args.output.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") print( f"Wrote {args.output}: {payload['meta']['pkg_country_count']} pkg-country keys, " - f"{payload['meta']['missing_count']} missing {TARGET_PLATFORM}" + f"{payload['meta']['missing_count']} missing {TARGET_PLATFORM}, " + f"{payload['mtg1013']['meta']['rows']} MTG rows" ) diff --git a/data.json b/data.json index 9a25007..9cd5788 100644 --- a/data.json +++ b/data.json @@ -2,7 +2,7 @@ "meta": { "title": "TaurusX订单", "source": "文稿 / SHAREit / 运营 / TaurusX搬单 / 武汉自投投放下单_AM&Media Buy.xlsx", - "generated_at": "2026-10-14T17:17:41+08:00", + "generated_at": "2026-10-14T17:21:47+08:00", "target_platform": "TaurusxDSP", "source_rows": 851, "valid_rows": 841, @@ -1358,7 +1358,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91557160" + ], + "valid_clicks": 210, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -2119,7 +2128,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "9102719" + ], + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -2886,7 +2904,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "1403381", + "7176840" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -2928,7 +2956,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "11924259" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -3332,7 +3369,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "6142269" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -3574,7 +3620,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "5556054", + "11079953" + ], + "valid_clicks": 937, + "installs": 2, + "revenue": 1.59, + "cost": 1.55 + } }, { "adpingids": [ @@ -3757,7 +3813,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "91578028" + ], + "valid_clicks": 303338, + "installs": 45, + "revenue": 12.6, + "cost": 7.8 + } }, { "adpingids": [ @@ -3789,7 +3854,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "12373981" + ], + "valid_clicks": 0, + "installs": 3, + "revenue": 0.12, + "cost": 0.0 + } }, { "adpingids": [ @@ -4062,7 +4136,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "91398053" + ], + "valid_clicks": 312, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -4194,7 +4277,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "5456077" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -4354,7 +4446,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91398087" + ], + "valid_clicks": 564, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -4412,7 +4513,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "11792342" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -4528,7 +4638,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91397179" + ], + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -4704,7 +4823,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91399439" + ], + "valid_clicks": 86, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -5227,7 +5355,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "8381194" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -5478,7 +5615,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "8381193", + "91400972" + ], + "valid_clicks": 993, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -5507,7 +5654,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91578027" + ], + "valid_clicks": 51159, + "installs": 11, + "revenue": 3.3, + "cost": 1.75 + } }, { "adpingids": [ @@ -6324,7 +6480,18 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "91496146", + "91538309", + "91565943" + ], + "valid_clicks": 5032, + "installs": 69, + "revenue": 13.8, + "cost": 9.66 + } }, { "adpingids": [ @@ -6514,7 +6681,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "7982583" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -6616,7 +6792,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "2189043", + "8029673" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -6687,7 +6873,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "1370139" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -6745,7 +6940,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91471943" + ], + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -6851,7 +7055,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "8032074" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -7943,7 +8156,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "6395488", + "10599157" + ], + "valid_clicks": 11817, + "installs": 497, + "revenue": 180.35, + "cost": 90.0 + } }, { "adpingids": [ @@ -7998,7 +8221,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "11381987" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8069,7 +8301,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "8534009" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8098,7 +8339,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91578025" + ], + "valid_clicks": 14123, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8153,7 +8403,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "9298539" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8318,7 +8577,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "10815258" + ], + "valid_clicks": 8, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8376,7 +8644,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91568575" + ], + "valid_clicks": 16, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8505,7 +8782,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "3498968" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -8742,7 +9028,19 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91496148", + "91520433", + "91538301", + "91565944" + ], + "valid_clicks": 13876, + "installs": 173, + "revenue": 43.25, + "cost": 25.95 + } }, { "adpingids": [ @@ -9245,7 +9543,17 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "8291713", + "10599681" + ], + "valid_clicks": 691, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -9357,7 +9665,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "7953512" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -9814,7 +10131,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "12115625" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -10055,7 +10381,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "7203110" + ], + "valid_clicks": 4411, + "installs": 2, + "revenue": 0.46, + "cost": 0.4 + } }, { "adpingids": [ @@ -10257,7 +10592,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "9373619" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -10458,7 +10802,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "91467821" + ], + "valid_clicks": 7, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -10503,7 +10856,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "5649424" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -10648,7 +11010,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91579904" + ], + "valid_clicks": 16, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -10737,7 +11108,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91564897" + ], + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -11299,7 +11679,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91579899" + ], + "valid_clicks": 3449, + "installs": 3, + "revenue": 2.106, + "cost": 1.5 + } }, { "adpingids": [ @@ -11515,7 +11904,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91580101" + ], + "valid_clicks": 153, + "installs": 5, + "revenue": 1.755, + "cost": 1.7 + } }, { "adpingids": [ @@ -11544,7 +11942,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91580100" + ], + "valid_clicks": 759, + "installs": 12, + "revenue": 4.176, + "cost": 3.6 + } }, { "adpingids": [ @@ -11644,7 +12051,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91550294" + ], + "valid_clicks": 10, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -12383,7 +12799,16 @@ ], "target_present": false, "missing_target": true, - "order_count": 1 + "order_count": 1, + "mtg1013": { + "adpingids": [ + "91573131" + ], + "valid_clicks": 12, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -12526,7 +12951,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "7572369", + "11729820" + ], + "valid_clicks": 2513, + "installs": 189, + "revenue": 139.86, + "cost": 45.6 + } }, { "adpingids": [ @@ -12569,7 +13004,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "10080665", + "11081056" + ], + "valid_clicks": 717, + "installs": 8, + "revenue": 3.68, + "cost": 3.04 + } }, { "adpingids": [ @@ -12682,7 +13127,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 20 + "order_count": 20, + "mtg1013": { + "adpingids": [ + "11892329", + "13084710" + ], + "valid_clicks": 11114, + "installs": 1376, + "revenue": 998.8736, + "cost": 296.0 + } }, { "adpingids": [ @@ -12738,7 +13193,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "8460883", + "11715655" + ], + "valid_clicks": 15316, + "installs": 827, + "revenue": 140.59, + "cost": 115.5 + } }, { "adpingids": [ @@ -12783,7 +13248,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91496147", + "91538308", + "91551845" + ], + "valid_clicks": 9975, + "installs": 244, + "revenue": 48.068, + "cost": 33.74 + } }, { "adpingids": [ @@ -12910,7 +13386,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "6951594", + "12064281" + ], + "valid_clicks": 40617, + "installs": 234, + "revenue": 163.8, + "cost": 146.3 + } }, { "adpingids": [ @@ -13053,7 +13539,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "91560708" + ], + "valid_clicks": 9646, + "installs": 179, + "revenue": 24.881, + "cost": 17.9 + } }, { "adpingids": [ @@ -13099,7 +13594,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91407542", + "91535229", + "91565942" + ], + "valid_clicks": 22182, + "installs": 239, + "revenue": 28.68, + "cost": 7.05 + } }, { "adpingids": [ @@ -13168,7 +13674,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "7815836", + "11836152" + ], + "valid_clicks": 146172, + "installs": 3684, + "revenue": 368.4, + "cost": 368.2 + } }, { "adpingids": [ @@ -13213,7 +13729,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91467820", + "91538300", + "91565945" + ], + "valid_clicks": 9194, + "installs": 153, + "revenue": 22.338, + "cost": 17.71 + } }, { "adpingids": [ @@ -13254,7 +13781,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "8566084" + ], + "valid_clicks": 6755, + "installs": 126, + "revenue": 30.24, + "cost": 12.0 + } }, { "adpingids": [ @@ -13299,7 +13835,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91410799", + "91535331", + "91565947" + ], + "valid_clicks": 162537, + "installs": 998, + "revenue": 39.92, + "cost": 19.94 + } }, { "adpingids": [ @@ -13340,7 +13887,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91566789" + ], + "valid_clicks": 218, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -13437,7 +13993,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "9686529", + "11080833" + ], + "valid_clicks": 15843, + "installs": 50, + "revenue": 23.25, + "cost": 20.0 + } }, { "adpingids": [ @@ -13535,7 +14101,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 8 + "order_count": 8, + "mtg1013": { + "adpingids": [ + "5963354", + "11078981" + ], + "valid_clicks": 27444, + "installs": 218, + "revenue": 141.918, + "cost": 110.0 + } }, { "adpingids": [ @@ -13576,7 +14152,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91567806" + ], + "valid_clicks": 10427, + "installs": 78, + "revenue": 15.6, + "cost": 11.7 + } }, { "adpingids": [ @@ -13697,7 +14282,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 9 + "order_count": 9, + "mtg1013": { + "adpingids": [ + "5365721" + ], + "valid_clicks": 10029, + "installs": 100, + "revenue": 200.0, + "cost": 50.0 + } }, { "adpingids": [ @@ -13753,7 +14347,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "5464039", + "8057746" + ], + "valid_clicks": 31778, + "installs": 658, + "revenue": 197.4, + "cost": 197.4 + } }, { "adpingids": [ @@ -13794,7 +14398,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91545519" + ], + "valid_clicks": 7916, + "installs": 73, + "revenue": 14.6, + "cost": 10.95 + } }, { "adpingids": [ @@ -13880,7 +14493,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "91496145", + "91538306", + "91565949" + ], + "valid_clicks": 10965, + "installs": 63, + "revenue": 12.6, + "cost": 9.54 + } }, { "adpingids": [ @@ -13949,7 +14573,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "7202934", + "11080098" + ], + "valid_clicks": 61301, + "installs": 58, + "revenue": 22.26, + "cost": 20.55 + } }, { "adpingids": [ @@ -14036,7 +14670,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 8 + "order_count": 8, + "mtg1013": { + "adpingids": [ + "7872826", + "91578026" + ], + "valid_clicks": 7104, + "installs": 123, + "revenue": 61.05, + "cost": 52.25 + } }, { "adpingids": [ @@ -14105,7 +14749,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "11690181", + "12038500" + ], + "valid_clicks": 25479, + "installs": 1675, + "revenue": 835.85, + "cost": 584.8 + } }, { "adpingids": [ @@ -14174,7 +14828,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "9311355", + "11715627" + ], + "valid_clicks": 10042, + "installs": 161, + "revenue": 96.6, + "cost": 39.25 + } }, { "adpingids": [ @@ -14246,7 +14910,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "10514860" + ], + "valid_clicks": 8449, + "installs": 93, + "revenue": 74.4, + "cost": 68.25 + } }, { "adpingids": [ @@ -14290,7 +14963,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "91564896" + ], + "valid_clicks": 4855, + "installs": 38, + "revenue": 18.9, + "cost": 15.2 + } }, { "adpingids": [ @@ -14331,7 +15013,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91567363" + ], + "valid_clicks": 8671, + "installs": 89, + "revenue": 26.611, + "cost": 21.25 + } }, { "adpingids": [ @@ -14376,7 +15067,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "2783561" + ], + "valid_clicks": 14161, + "installs": 573, + "revenue": 160.44, + "cost": 50.0 + } }, { "adpingids": [ @@ -14443,7 +15143,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 4 + "order_count": 4, + "mtg1013": { + "adpingids": [ + "2802077" + ], + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0 + } }, { "adpingids": [ @@ -14529,7 +15238,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 8 + "order_count": 8, + "mtg1013": { + "adpingids": [ + "2937658", + "11078963", + "12072287" + ], + "valid_clicks": 3366, + "installs": 279, + "revenue": 140.0, + "cost": 67.6 + } }, { "adpingids": [ @@ -14600,7 +15320,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "8156506", + "12425335" + ], + "valid_clicks": 0, + "installs": 32, + "revenue": 4.16, + "cost": 0.0 + } }, { "adpingids": [ @@ -14711,7 +15441,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "91557347" + ], + "valid_clicks": 13326, + "installs": 31, + "revenue": 35.96, + "cost": 24.8 + } }, { "adpingids": [ @@ -14774,7 +15513,19 @@ ], "target_present": true, "missing_target": false, - "order_count": 7 + "order_count": 7, + "mtg1013": { + "adpingids": [ + "4383473", + "6060965", + "6061077", + "6607117" + ], + "valid_clicks": 9002, + "installs": 570, + "revenue": 566.8, + "cost": 296.7 + } }, { "adpingids": [ @@ -14843,7 +15594,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "91567811" + ], + "valid_clicks": 5714, + "installs": 25, + "revenue": 37.5, + "cost": 22.0 + } }, { "adpingids": [ @@ -14884,7 +15644,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "13085659" + ], + "valid_clicks": 0, + "installs": 1, + "revenue": 0.4, + "cost": 0.0 + } }, { "adpingids": [ @@ -15053,7 +15822,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "1745925", + "10501490" + ], + "valid_clicks": 22787, + "installs": 636, + "revenue": 171.72, + "cost": 91.95 + } }, { "adpingids": [ @@ -15133,7 +15912,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "2732727" + ], + "valid_clicks": 10664, + "installs": 719, + "revenue": 589.58, + "cost": 178.0 + } }, { "adpingids": [ @@ -15194,7 +15982,18 @@ ], "target_present": true, "missing_target": false, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "5497580", + "8998645", + "11324493" + ], + "valid_clicks": 67101, + "installs": 1581, + "revenue": 504.1, + "cost": 438.21 + } }, { "adpingids": [ @@ -15237,7 +16036,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 3 + "order_count": 3, + "mtg1013": { + "adpingids": [ + "6951600" + ], + "valid_clicks": 1695, + "installs": 34, + "revenue": 5.78, + "cost": 5.78 + } }, { "adpingids": [ @@ -15278,7 +16086,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91573130" + ], + "valid_clicks": 300, + "installs": 2, + "revenue": 0.5, + "cost": 0.4 + } }, { "adpingids": [ @@ -15448,7 +16265,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91550293" + ], + "valid_clicks": 7634, + "installs": 14, + "revenue": 6.3, + "cost": 4.9 + } }, { "adpingids": [ @@ -15530,7 +16356,17 @@ ], "target_present": true, "missing_target": false, - "order_count": 6 + "order_count": 6, + "mtg1013": { + "adpingids": [ + "5963400", + "11078827" + ], + "valid_clicks": 2714, + "installs": 62, + "revenue": 28.83, + "cost": 10.3 + } }, { "adpingids": [ @@ -15571,7 +16407,16 @@ ], "target_present": true, "missing_target": false, - "order_count": 2 + "order_count": 2, + "mtg1013": { + "adpingids": [ + "91560709" + ], + "valid_clicks": 27018, + "installs": 551, + "revenue": 55.1, + "cost": 33.06 + } }, { "adpingids": [ @@ -15640,7 +16485,2863 @@ ], "target_present": true, "missing_target": false, - "order_count": 5 + "order_count": 5, + "mtg1013": { + "adpingids": [ + "6425889", + "11729927" + ], + "valid_clicks": 5457, + "installs": 199, + "revenue": 113.43, + "cost": 49.75 + } } - ] + ], + "mtg1013": { + "meta": { + "source": "mtg1013.csv", + "rows": 159, + "unique_keys": 114, + "unique_adpingids": 159, + "matched_order_rows": 135, + "matched_adpingid_rows": 131, + "unmatched_order_rows": 24, + "valid_clicks": 1280181, + "installs": 17865, + "revenue": 6434.4766, + "cost": 3711.48, + "profit": 2722.9966, + "roas": 1.7337, + "install_rate": 0.014 + }, + "country_summary": [ + { + "country": "RU", + "rows": 43, + "valid_clicks": 173487, + "installs": 4996, + "revenue": 2453.991, + "cost": 1450.0, + "profit": 1003.991, + "roas": 1.6924 + }, + { + "country": "BR", + "rows": 10, + "valid_clicks": 36615, + "installs": 2447, + "revenue": 1187.5316, + "cost": 445.24, + "profit": 742.2916, + "roas": 2.6672 + }, + { + "country": "TH", + "rows": 10, + "valid_clicks": 69103, + "installs": 1617, + "revenue": 510.38, + "cost": 444.39, + "profit": 65.99, + "roas": 1.1485 + }, + { + "country": "ID", + "rows": 20, + "valid_clicks": 482135, + "installs": 4126, + "revenue": 433.728, + "cost": 402.31, + "profit": 31.418, + "roas": 1.0781 + }, + { + "country": "MY", + "rows": 6, + "valid_clicks": 44726, + "installs": 800, + "revenue": 225.8, + "cost": 218.01, + "profit": 7.79, + "roas": 1.0357 + }, + { + "country": "SA", + "rows": 1, + "valid_clicks": 10664, + "installs": 719, + "revenue": 589.58, + "cost": 178.0, + "profit": 411.58, + "roas": 3.3122 + }, + { + "country": "DE", + "rows": 2, + "valid_clicks": 40617, + "installs": 234, + "revenue": 163.8, + "cost": 146.3, + "profit": 17.5, + "roas": 1.1196 + }, + { + "country": "KZ", + "rows": 2, + "valid_clicks": 27444, + "installs": 218, + "revenue": 141.918, + "cost": 110.0, + "profit": 31.918, + "roas": 1.2902 + }, + { + "country": "MX", + "rows": 3, + "valid_clicks": 20456, + "installs": 178, + "revenue": 215.6, + "cost": 61.7, + "profit": 153.9, + "roas": 3.4943 + }, + { + "country": "ZA", + "rows": 3, + "valid_clicks": 5457, + "installs": 199, + "revenue": 113.43, + "cost": 49.75, + "profit": 63.68, + "roas": 2.28 + }, + { + "country": "AE", + "rows": 2, + "valid_clicks": 2513, + "installs": 189, + "revenue": 139.86, + "cost": 45.6, + "profit": 94.26, + "roas": 3.0671 + }, + { + "country": "VN", + "rows": 3, + "valid_clicks": 27030, + "installs": 551, + "revenue": 55.1, + "cost": 33.06, + "profit": 22.04, + "roas": 1.6667 + }, + { + "country": "IN", + "rows": 14, + "valid_clicks": 171154, + "installs": 1124, + "revenue": 70.16, + "cost": 31.94, + "profit": 38.22, + "roas": 2.1966 + }, + { + "country": "PK", + "rows": 3, + "valid_clicks": 61301, + "installs": 58, + "revenue": 22.26, + "cost": 20.55, + "profit": 1.71, + "roas": 1.0832 + }, + { + "country": "KG", + "rows": 2, + "valid_clicks": 15843, + "installs": 50, + "revenue": 23.25, + "cost": 20.0, + "profit": 3.25, + "roas": 1.1625 + }, + { + "country": "FR", + "rows": 1, + "valid_clicks": 9646, + "installs": 179, + "revenue": 24.881, + "cost": 17.9, + "profit": 6.981, + "roas": 1.39 + }, + { + "country": "UZ", + "rows": 2, + "valid_clicks": 2714, + "installs": 62, + "revenue": 28.83, + "cost": 10.3, + "profit": 18.53, + "roas": 2.799 + }, + { + "country": "PH", + "rows": 14, + "valid_clicks": 10966, + "installs": 63, + "revenue": 12.6, + "cost": 9.54, + "profit": 3.06, + "roas": 1.3208 + }, + { + "country": "US", + "rows": 5, + "valid_clicks": 4371, + "installs": 20, + "revenue": 8.037, + "cost": 6.8, + "profit": 1.237, + "roas": 1.1819 + }, + { + "country": "TR", + "rows": 3, + "valid_clicks": 7651, + "installs": 14, + "revenue": 6.3, + "cost": 4.9, + "profit": 1.4, + "roas": 1.2857 + }, + { + "country": "AM", + "rows": 2, + "valid_clicks": 717, + "installs": 8, + "revenue": 3.68, + "cost": 3.04, + "profit": 0.64, + "roas": 1.2105 + }, + { + "country": "IQ", + "rows": 2, + "valid_clicks": 51159, + "installs": 11, + "revenue": 3.3, + "cost": 1.75, + "profit": 1.55, + "roas": 1.8857 + }, + { + "country": "SY", + "rows": 1, + "valid_clicks": 4411, + "installs": 2, + "revenue": 0.46, + "cost": 0.4, + "profit": 0.06, + "roas": 1.15 + }, + { + "country": "EG", + "rows": 1, + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null + }, + { + "country": "ES", + "rows": 1, + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null + }, + { + "country": "JP", + "rows": 1, + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null + }, + { + "country": "SG", + "rows": 1, + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null + }, + { + "country": "UA", + "rows": 1, + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null + } + ], + "records": [ + { + "adpingid": "11690181", + "pkg": "astrum.ent.m2alyona", + "country": "RU", + "valid_clicks": 24694, + "installs": 1642, + "revenue": 821.0, + "cost": 572.0, + "profit": 249.0, + "roas": 1.4353, + "install_rate": 0.0665, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "5497580", + "pkg": "com.king.candycrushsaga", + "country": "TH", + "valid_clicks": 57903, + "installs": 1431, + "revenue": 429.3, + "cost": 400.68, + "profit": 28.62, + "roas": 1.0714, + "install_rate": 0.0247, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "7815836", + "pkg": "com.kwai.bulldog", + "country": "ID", + "valid_clicks": 146100, + "installs": 3684, + "revenue": 368.4, + "cost": 368.2, + "profit": 0.2, + "roas": 1.0005, + "install_rate": 0.0252, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11892329", + "pkg": "com.amazon.mShop.android.shopping", + "country": "BR", + "valid_clicks": 8593, + "installs": 1136, + "revenue": 821.4416, + "cost": 250.0, + "profit": 571.4416, + "roas": 3.2858, + "install_rate": 0.1322, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "6607117", + "pkg": "ru.aliexpress.buyer", + "country": "RU", + "valid_clicks": 3326, + "installs": 267, + "revenue": 293.7, + "cost": 229.5, + "profit": 64.2, + "roas": 1.2797, + "install_rate": 0.0803, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "5464039", + "pkg": "com.king.candycrushsaga", + "country": "MY", + "valid_clicks": 31737, + "installs": 658, + "revenue": 197.4, + "cost": 197.4, + "profit": 0.0, + "roas": 1.0, + "install_rate": 0.0207, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "2732727", + "pkg": "com.amazon.mShop.android.shopping", + "country": "SA", + "valid_clicks": 10664, + "installs": 719, + "revenue": 589.58, + "cost": 178.0, + "profit": 411.58, + "roas": 3.3122, + "install_rate": 0.0674, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "6951594", + "pkg": "com.king.candycrushsodasaga", + "country": "DE", + "valid_clicks": 40616, + "installs": 234, + "revenue": 163.8, + "cost": 146.3, + "profit": 17.5, + "roas": 1.1196, + "install_rate": 0.0058, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "8460883", + "pkg": "com.king.candycrushsodasaga", + "country": "BR", + "valid_clicks": 15313, + "installs": 827, + "revenue": 140.59, + "cost": 115.5, + "profit": 25.09, + "roas": 1.2172, + "install_rate": 0.054, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "5963354", + "pkg": "ru.ozon.app.android", + "country": "KZ", + "valid_clicks": 27434, + "installs": 218, + "revenue": 141.918, + "cost": 110.0, + "profit": 31.918, + "roas": 1.2902, + "install_rate": 0.0079, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "1745925", + "pkg": "tech.jm", + "country": "RU", + "valid_clicks": 22355, + "installs": 623, + "revenue": 168.21, + "cost": 90.0, + "profit": 78.21, + "roas": 1.869, + "install_rate": 0.0279, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "10514860", + "pkg": "com.esprit.rpg.lttlefirykng", + "country": "RU", + "valid_clicks": 8449, + "installs": 93, + "revenue": 74.4, + "cost": 68.25, + "profit": 6.15, + "roas": 1.0901, + "install_rate": 0.011, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "6395488", + "pkg": "com.edadeal.android", + "country": "RU", + "valid_clicks": 8783, + "installs": 369, + "revenue": 129.15, + "cost": 60.0, + "profit": 69.15, + "roas": 2.1525, + "install_rate": 0.042, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "2783561", + "pkg": "com.uma.musicvk", + "country": "RU", + "valid_clicks": 14161, + "installs": 573, + "revenue": 160.44, + "cost": 50.0, + "profit": 110.44, + "roas": 3.2088, + "install_rate": 0.0405, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "5365721", + "pkg": "sports.caliente.mx.calientedeportes", + "country": "MX", + "valid_clicks": 10029, + "installs": 100, + "revenue": 200.0, + "cost": 50.0, + "profit": 150.0, + "roas": 4.0, + "install_rate": 0.01, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "6425889", + "pkg": "com.amazon.mShop.android.shopping", + "country": "ZA", + "valid_clicks": 5447, + "installs": 199, + "revenue": 113.43, + "cost": 49.75, + "profit": 63.68, + "roas": 2.28, + "install_rate": 0.0365, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "7872826", + "pkg": "asrtum.ent.domovyata", + "country": "RU", + "valid_clicks": 6067, + "installs": 105, + "revenue": 55.65, + "cost": 48.0, + "profit": 7.65, + "roas": 1.1594, + "install_rate": 0.0173, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "13084710", + "pkg": "com.amazon.mShop.android.shopping", + "country": "BR", + "valid_clicks": 2521, + "installs": 240, + "revenue": 177.432, + "cost": 46.0, + "profit": 131.432, + "roas": 3.8572, + "install_rate": 0.0952, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "7572369", + "pkg": "com.amazon.mShop.android.shopping", + "country": "AE", + "valid_clicks": 2510, + "installs": 189, + "revenue": 139.86, + "cost": 45.6, + "profit": 94.26, + "roas": 3.0671, + "install_rate": 0.0753, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "12072287", + "pkg": "com.yandex.bank", + "country": "RU", + "valid_clicks": 481, + "installs": 99, + "revenue": 99.0, + "cost": 40.0, + "profit": 59.0, + "roas": 2.475, + "install_rate": 0.2058, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "9311355", + "pkg": "com.esprit.rpg.cntrctfft", + "country": "RU", + "valid_clicks": 10039, + "installs": 161, + "revenue": 96.6, + "cost": 39.25, + "profit": 57.35, + "roas": 2.4611, + "install_rate": 0.016, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "8998645", + "pkg": "com.king.candycrushsaga", + "country": "TH", + "valid_clicks": 8919, + "installs": 149, + "revenue": 74.5, + "cost": 37.25, + "profit": 37.25, + "roas": 2.0, + "install_rate": 0.0167, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91560709", + "pkg": "com.king.candycrushsaga", + "country": "VN", + "valid_clicks": 27018, + "installs": 551, + "revenue": 55.1, + "cost": 33.06, + "profit": 22.04, + "roas": 1.6667, + "install_rate": 0.0204, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "10599157", + "pkg": "com.edadeal.android", + "country": "RU", + "valid_clicks": 3034, + "installs": 128, + "revenue": 51.2, + "cost": 30.0, + "profit": 21.2, + "roas": 1.7067, + "install_rate": 0.0422, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "6060965", + "pkg": "ru.aliexpress.buyer", + "country": "RU", + "valid_clicks": 2805, + "installs": 108, + "revenue": 97.2, + "cost": 30.0, + "profit": 67.2, + "roas": 3.24, + "install_rate": 0.0385, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "4383473", + "pkg": "ru.aliexpress.buyer", + "country": "RU", + "valid_clicks": 2252, + "installs": 187, + "revenue": 168.3, + "cost": 30.0, + "profit": 138.3, + "roas": 5.61, + "install_rate": 0.083, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91557347", + "pkg": "robot.zaimer.ru", + "country": "RU", + "valid_clicks": 13326, + "installs": 31, + "revenue": 35.96, + "cost": 24.8, + "profit": 11.16, + "roas": 1.45, + "install_rate": 0.0023, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91496148", + "pkg": "com.vitastudio.mahjong", + "country": "RU", + "valid_clicks": 11555, + "installs": 158, + "revenue": 39.5, + "cost": 23.7, + "profit": 15.8, + "roas": 1.6667, + "install_rate": 0.0137, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91567811", + "pkg": "ru.banki.banki", + "country": "RU", + "valid_clicks": 5714, + "installs": 25, + "revenue": 37.5, + "cost": 22.0, + "profit": 15.5, + "roas": 1.7045, + "install_rate": 0.0044, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91567363", + "pkg": "com.oakever.meowdoku", + "country": "RU", + "valid_clicks": 8671, + "installs": 89, + "revenue": 26.611, + "cost": 21.25, + "profit": 5.361, + "roas": 1.2523, + "install_rate": 0.0103, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91496147", + "pkg": "com.vitastudio.mahjong", + "country": "BR", + "valid_clicks": 4448, + "installs": 153, + "revenue": 30.141, + "cost": 21.0, + "profit": 9.141, + "roas": 1.4353, + "install_rate": 0.0344, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "9686529", + "pkg": "ru.ozon.app.android", + "country": "KG", + "valid_clicks": 15841, + "installs": 50, + "revenue": 23.25, + "cost": 20.0, + "profit": 3.25, + "roas": 1.1625, + "install_rate": 0.0032, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "7202934", + "pkg": "com.fxpro.direct.application", + "country": "PK", + "valid_clicks": 60481, + "installs": 57, + "revenue": 21.66, + "cost": 19.95, + "profit": 1.71, + "roas": 1.0857, + "install_rate": 0.0009, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91565947", + "pkg": "com.king.candycrushsaga", + "country": "IN", + "valid_clicks": 162176, + "installs": 996, + "revenue": 39.84, + "cost": 19.9, + "profit": 19.94, + "roas": 2.002, + "install_rate": 0.0061, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91560708", + "pkg": "com.king.candycrushsaga", + "country": "FR", + "valid_clicks": 9646, + "installs": 179, + "revenue": 24.881, + "cost": 17.9, + "profit": 6.981, + "roas": 1.39, + "install_rate": 0.0186, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11078963", + "pkg": "com.yandex.bank", + "country": "RU", + "valid_clicks": 1556, + "installs": 64, + "revenue": 35.2, + "cost": 17.6, + "profit": 17.6, + "roas": 2.0, + "install_rate": 0.0411, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91467820", + "pkg": "com.vitastudio.mahjong", + "country": "ID", + "valid_clicks": 7335, + "installs": 128, + "revenue": 18.688, + "cost": 15.36, + "profit": 3.328, + "roas": 1.2167, + "install_rate": 0.0175, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91564896", + "pkg": "com.game.friends.ru", + "country": "RU", + "valid_clicks": 4855, + "installs": 38, + "revenue": 18.9, + "cost": 15.2, + "profit": 3.7, + "roas": 1.2434, + "install_rate": 0.0078, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "12038500", + "pkg": "astrum.ent.m2alyona", + "country": "RU", + "valid_clicks": 785, + "installs": 33, + "revenue": 14.85, + "cost": 12.8, + "profit": 2.05, + "roas": 1.1602, + "install_rate": 0.042, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91551845", + "pkg": "com.vitastudio.mahjong", + "country": "BR", + "valid_clicks": 5524, + "installs": 91, + "revenue": 17.927, + "cost": 12.74, + "profit": 5.187, + "roas": 1.4071, + "install_rate": 0.0165, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "8566084", + "pkg": "com.intellihealth.truemeds", + "country": "IN", + "valid_clicks": 6755, + "installs": 126, + "revenue": 30.24, + "cost": 12.0, + "profit": 18.24, + "roas": 2.52, + "install_rate": 0.0187, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91567806", + "pkg": "com.oakever.meowdoku", + "country": "MX", + "valid_clicks": 10427, + "installs": 78, + "revenue": 15.6, + "cost": 11.7, + "profit": 3.9, + "roas": 1.3333, + "install_rate": 0.0075, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91545519", + "pkg": "com.vuclip.viu", + "country": "MY", + "valid_clicks": 7916, + "installs": 73, + "revenue": 14.6, + "cost": 10.95, + "profit": 3.65, + "roas": 1.3333, + "install_rate": 0.0092, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "5963400", + "pkg": "ru.ozon.app.android", + "country": "UZ", + "valid_clicks": 2522, + "installs": 61, + "revenue": 28.365, + "cost": 10.0, + "profit": 18.365, + "roas": 2.8365, + "install_rate": 0.0242, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "2937658", + "pkg": "com.yandex.bank", + "country": "RU", + "valid_clicks": 1329, + "installs": 116, + "revenue": 5.8, + "cost": 10.0, + "profit": -4.2, + "roas": 0.58, + "install_rate": 0.0873, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91496146", + "pkg": "com.vitastudio.mahjong", + "country": "MY", + "valid_clicks": 4741, + "installs": 61, + "revenue": 12.2, + "cost": 8.54, + "profit": 3.66, + "roas": 1.4286, + "install_rate": 0.0129, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91578028", + "pkg": "com.neptune.domino", + "country": "ID", + "valid_clicks": 303338, + "installs": 45, + "revenue": 12.6, + "cost": 7.8, + "profit": 4.8, + "roas": 1.6154, + "install_rate": 0.0001, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "6061077", + "pkg": "ru.aliexpress.buyer", + "country": "RU", + "valid_clicks": 619, + "installs": 8, + "revenue": 7.6, + "cost": 7.2, + "profit": 0.4, + "roas": 1.0556, + "install_rate": 0.0129, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91565942", + "pkg": "com.king.candycrushsaga", + "country": "ID", + "valid_clicks": 19408, + "installs": 227, + "revenue": 27.24, + "cost": 6.81, + "profit": 20.43, + "roas": 4.0, + "install_rate": 0.0117, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91565949", + "pkg": "com.vitastudio.mahjong", + "country": "PH", + "valid_clicks": 8010, + "installs": 44, + "revenue": 8.8, + "cost": 6.6, + "profit": 2.2, + "roas": 1.3333, + "install_rate": 0.0055, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "6951600", + "pkg": "com.king.candycrushsodasaga", + "country": "TH", + "valid_clicks": 1695, + "installs": 34, + "revenue": 5.78, + "cost": 5.78, + "profit": 0.0, + "roas": 1.0, + "install_rate": 0.0201, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91550293", + "pkg": "net.peakgames.Yuzbir", + "country": "TR", + "valid_clicks": 7634, + "installs": 14, + "revenue": 6.3, + "cost": 4.9, + "profit": 1.4, + "roas": 1.2857, + "install_rate": 0.0018, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91578026", + "pkg": "asrtum.ent.domovyata", + "country": "RU", + "valid_clicks": 1037, + "installs": 18, + "revenue": 5.4, + "cost": 4.25, + "profit": 1.15, + "roas": 1.2706, + "install_rate": 0.0174, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91580100", + "pkg": "com.nebula.rotaterings", + "country": "US", + "valid_clicks": 759, + "installs": 12, + "revenue": 4.176, + "cost": 3.6, + "profit": 0.576, + "roas": 1.16, + "install_rate": 0.0158, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "10080665", + "pkg": "ru.ozon.app.android", + "country": "AM", + "valid_clicks": 708, + "installs": 8, + "revenue": 3.68, + "cost": 3.04, + "profit": 0.64, + "roas": 1.2105, + "install_rate": 0.0113, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91496145", + "pkg": "com.vitastudio.mahjong", + "country": "PH", + "valid_clicks": 2765, + "installs": 16, + "revenue": 3.2, + "cost": 2.4, + "profit": 0.8, + "roas": 1.3333, + "install_rate": 0.0058, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91565944", + "pkg": "com.vitastudio.mahjong", + "country": "RU", + "valid_clicks": 1329, + "installs": 15, + "revenue": 3.75, + "cost": 2.25, + "profit": 1.5, + "roas": 1.6667, + "install_rate": 0.0113, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91565945", + "pkg": "com.vitastudio.mahjong", + "country": "ID", + "valid_clicks": 1602, + "installs": 23, + "revenue": 3.358, + "cost": 2.07, + "profit": 1.288, + "roas": 1.6222, + "install_rate": 0.0144, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "10501490", + "pkg": "tech.jm", + "country": "RU", + "valid_clicks": 432, + "installs": 13, + "revenue": 3.51, + "cost": 1.95, + "profit": 1.56, + "roas": 1.8, + "install_rate": 0.0301, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91578027", + "pkg": "com.big.ludocafe", + "country": "IQ", + "valid_clicks": 51159, + "installs": 11, + "revenue": 3.3, + "cost": 1.75, + "profit": 1.55, + "roas": 1.8857, + "install_rate": 0.0002, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91580101", + "pkg": "com.nebula.mahjongtile", + "country": "US", + "valid_clicks": 153, + "installs": 5, + "revenue": 1.755, + "cost": 1.7, + "profit": 0.055, + "roas": 1.0324, + "install_rate": 0.0327, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91579899", + "pkg": "com.game.friends.teamiksa", + "country": "US", + "valid_clicks": 3449, + "installs": 3, + "revenue": 2.106, + "cost": 1.5, + "profit": 0.606, + "roas": 1.404, + "install_rate": 0.0009, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91565943", + "pkg": "com.vitastudio.mahjong", + "country": "MY", + "valid_clicks": 279, + "installs": 8, + "revenue": 1.6, + "cost": 1.12, + "profit": 0.48, + "roas": 1.4286, + "install_rate": 0.0287, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11079953", + "pkg": "com.krom.android", + "country": "ID", + "valid_clicks": 584, + "installs": 1, + "revenue": 0.8, + "cost": 0.8, + "profit": 0.0, + "roas": 1.0, + "install_rate": 0.0017, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "5556054", + "pkg": "com.krom.android", + "country": "ID", + "valid_clicks": 353, + "installs": 1, + "revenue": 0.79, + "cost": 0.75, + "profit": 0.04, + "roas": 1.0533, + "install_rate": 0.0028, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11080098", + "pkg": "com.fxpro.direct.application", + "country": "PK", + "valid_clicks": 820, + "installs": 1, + "revenue": 0.6, + "cost": 0.6, + "profit": 0.0, + "roas": 1.0, + "install_rate": 0.0012, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91538306", + "pkg": "com.vitastudio.mahjong", + "country": "PH", + "valid_clicks": 190, + "installs": 3, + "revenue": 0.6, + "cost": 0.54, + "profit": 0.06, + "roas": 1.1111, + "install_rate": 0.0158, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "7203110", + "pkg": "com.fxpro.direct.application", + "country": "SY", + "valid_clicks": 4411, + "installs": 2, + "revenue": 0.46, + "cost": 0.4, + "profit": 0.06, + "roas": 1.15, + "install_rate": 0.0005, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91573130", + "pkg": "com.netease.newspike", + "country": "TH", + "valid_clicks": 300, + "installs": 2, + "revenue": 0.5, + "cost": 0.4, + "profit": 0.1, + "roas": 1.25, + "install_rate": 0.0067, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11078827", + "pkg": "ru.ozon.app.android", + "country": "UZ", + "valid_clicks": 192, + "installs": 1, + "revenue": 0.465, + "cost": 0.3, + "profit": 0.165, + "roas": 1.55, + "install_rate": 0.0052, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11324493", + "pkg": "com.king.candycrushsaga", + "country": "TH", + "valid_clicks": 279, + "installs": 1, + "revenue": 0.3, + "cost": 0.28, + "profit": 0.02, + "roas": 1.0714, + "install_rate": 0.0036, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91538300", + "pkg": "com.vitastudio.mahjong", + "country": "ID", + "valid_clicks": 257, + "installs": 2, + "revenue": 0.292, + "cost": 0.28, + "profit": 0.012, + "roas": 1.0429, + "install_rate": 0.0078, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91407542", + "pkg": "com.king.candycrushsaga", + "country": "ID", + "valid_clicks": 2325, + "installs": 6, + "revenue": 0.72, + "cost": 0.12, + "profit": 0.6, + "roas": 6.0, + "install_rate": 0.0026, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91535229", + "pkg": "com.king.candycrushsaga", + "country": "ID", + "valid_clicks": 449, + "installs": 6, + "revenue": 0.72, + "cost": 0.12, + "profit": 0.6, + "roas": 6.0, + "install_rate": 0.0134, + "order_match": true, + "adpingid_match": false, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91535331", + "pkg": "com.king.candycrushsaga", + "country": "IN", + "valid_clicks": 340, + "installs": 2, + "revenue": 0.08, + "cost": 0.04, + "profit": 0.04, + "roas": 2.0, + "install_rate": 0.0059, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91578025", + "pkg": "com.gigachat.app", + "country": "RU", + "valid_clicks": 14123, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91400972", + "pkg": "story.tv.drama.reels", + "country": "IN", + "valid_clicks": 993, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91520433", + "pkg": "com.vitastudio.mahjong", + "country": "RU", + "valid_clicks": 940, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "10599681", + "pkg": "ru.kinopoisk", + "country": "RU", + "valid_clicks": 691, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91398087", + "pkg": "com.branch_international.branch.branch_demo_android", + "country": "IN", + "valid_clicks": 564, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91398053", + "pkg": "com.vuclip.viu", + "country": "ID", + "valid_clicks": 312, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91566789", + "pkg": "com.salaryse.android", + "country": "IN", + "valid_clicks": 218, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91557160", + "pkg": "shorts.drama.video", + "country": "BR", + "valid_clicks": 210, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91399439", + "pkg": "com.kotak811mobilebankingapp.instantsavingsupiscanandpayrecharge", + "country": "IN", + "valid_clicks": 86, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11836152", + "pkg": "com.kwai.bulldog", + "country": "ID", + "valid_clicks": 72, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91538301", + "pkg": "com.vitastudio.mahjong", + "country": "RU", + "valid_clicks": 52, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8057746", + "pkg": "com.king.candycrushsaga", + "country": "MY", + "valid_clicks": 41, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91410799", + "pkg": "com.king.candycrushsaga", + "country": "IN", + "valid_clicks": 21, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91568575", + "pkg": "com.mexcpro.client", + "country": "RU", + "valid_clicks": 16, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91579904", + "pkg": "com.kubi.kucoin", + "country": "TR", + "valid_clicks": 16, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91538309", + "pkg": "com.vitastudio.mahjong", + "country": "MY", + "valid_clicks": 12, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91573131", + "pkg": "com.netease.newspike", + "country": "VN", + "valid_clicks": 12, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11078981", + "pkg": "ru.ozon.app.android", + "country": "KZ", + "valid_clicks": 10, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11729927", + "pkg": "com.amazon.mShop.android.shopping", + "country": "ZA", + "valid_clicks": 10, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91550294", + "pkg": "com.okinc.okex.gp", + "country": "US", + "valid_clicks": 10, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11081056", + "pkg": "ru.ozon.app.android", + "country": "AM", + "valid_clicks": 9, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "10815258", + "pkg": "com.kubi.kucoin", + "country": "RU", + "valid_clicks": 8, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91467821", + "pkg": "com.vitastudio.mahjong", + "country": "TH", + "valid_clicks": 7, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11715627", + "pkg": "com.esprit.rpg.cntrctfft", + "country": "RU", + "valid_clicks": 3, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11715655", + "pkg": "com.king.candycrushsodasaga", + "country": "BR", + "valid_clicks": 3, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11729820", + "pkg": "com.amazon.mShop.android.shopping", + "country": "AE", + "valid_clicks": 3, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "91538308", + "pkg": "com.vitastudio.mahjong", + "country": "BR", + "valid_clicks": 3, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "11080833", + "pkg": "ru.ozon.app.android", + "country": "KG", + "valid_clicks": 2, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "12064281", + "pkg": "com.king.candycrushsodasaga", + "country": "DE", + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "9102719", + "pkg": "com.tencent.ig", + "country": "EG", + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91397179", + "pkg": "com.fsn.nykaa", + "country": "IN", + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91471943", + "pkg": "com.king.candycrushsodasaga", + "country": "PH", + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "91564897", + "pkg": "com.puzzlegames.puzzlebrickslegend", + "country": "TR", + "valid_clicks": 1, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": 0.0, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11381987", + "pkg": "com.espritgames.rpg.chsrgn", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11792342", + "pkg": "com.conquian.parallax", + "country": "IN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "11924259", + "pkg": "blibli.mobile.commerce", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "12115625", + "pkg": "ru.zhuck.webapp", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "12373981", + "pkg": "com.reels.cash.video.app", + "country": "ID", + "valid_clicks": 0, + "installs": 3, + "revenue": 0.12, + "cost": 0.0, + "profit": 0.12, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "12425335", + "pkg": "com.yandex.lavka", + "country": "RU", + "valid_clicks": 0, + "installs": 4, + "revenue": 0.8, + "cost": 0.0, + "profit": 0.8, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "13085659", + "pkg": "ru.hoff.app", + "country": "RU", + "valid_clicks": 0, + "installs": 1, + "revenue": 0.4, + "cost": 0.0, + "profit": 0.4, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "1370139", + "pkg": "com.intech.c66app", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": false, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "1385514", + "pkg": "com.yalla.yallagames", + "country": "IQ", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "1390873", + "pkg": "com.naviapp", + "country": "IN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "1401227", + "pkg": "com.lazada.android", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "1403381", + "pkg": "app.source.getcontact", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": false, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "1415990", + "pkg": "com.global.foodpanda.android", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2189043", + "pkg": "com.globe.gcash.android", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "2200420", + "pkg": "com.shopee.id", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2597308", + "pkg": "com.Dominos", + "country": "IN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2616955", + "pkg": "com.global.foodpanda.android", + "country": "PK", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2723661", + "pkg": "com.miravia.android", + "country": "ES", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2747527", + "pkg": "com.sgiggle.production", + "country": "US", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "2802077", + "pkg": "com.vk.vkvideo", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "2979652", + "pkg": "com.ayoba.ayoba", + "country": "ZA", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "3105034", + "pkg": "com.hypergutura.tearthemall", + "country": "TH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "3105165", + "pkg": "com.hypergutura.tearthemall", + "country": "BR", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "3277275", + "pkg": "com.daki", + "country": "BR", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "3498968", + "pkg": "com.playkot.ageofmagic", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": false, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "4779894", + "pkg": "com.support.excellenteralending", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "4848737", + "pkg": "com.urpxf.mdsig", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5019347", + "pkg": "com.privalia.mex", + "country": "MX", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5312906", + "pkg": "com.lendpinoy.ccps.cash", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5312938", + "pkg": "com.kwento.loan.ph", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5321105", + "pkg": "com.playkot.ageofmagic", + "country": "UA", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5425234", + "pkg": "ru.oneme.app", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5456077", + "pkg": "in.startv.hotstar.dplus", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "5627980", + "pkg": "com.gp.hcr.moc", + "country": "TH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5649424", + "pkg": "in.startv.hotstar.dplus", + "country": "TH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "5852834", + "pkg": "com.traveloka.android", + "country": "JP", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5912236", + "pkg": "com.traveloka.android", + "country": "VN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "5912267", + "pkg": "com.traveloka.android", + "country": "SG", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": false, + "adpingid_match": false, + "target_present": false, + "missing_target": false + }, + { + "adpingid": "6142269", + "pkg": "com.jago.digitalBanking", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "7176840", + "pkg": "app.source.getcontact", + "country": "ID", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "7953512", + "pkg": "ru.mobstudio.andgalaxy", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "7982583", + "pkg": "com.disneyplus.ph", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8029673", + "pkg": "com.globe.gcash.android", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8032074", + "pkg": "com.mocamoca", + "country": "PH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8156506", + "pkg": "com.yandex.lavka", + "country": "RU", + "valid_clicks": 0, + "installs": 28, + "revenue": 3.36, + "cost": 0.0, + "profit": 3.36, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": true, + "missing_target": false + }, + { + "adpingid": "8291713", + "pkg": "ru.kinopoisk", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8381193", + "pkg": "story.tv.drama.reels", + "country": "IN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8381194", + "pkg": "in.mohalla.quicktv", + "country": "IN", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "8534009", + "pkg": "com.espritgames.rpg.skg", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "9298539", + "pkg": "com.gloriajeans.mobile", + "country": "RU", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + }, + { + "adpingid": "9373619", + "pkg": "com.moneydd.goodmoney", + "country": "TH", + "valid_clicks": 0, + "installs": 0, + "revenue": 0.0, + "cost": 0.0, + "profit": 0.0, + "roas": null, + "install_rate": null, + "order_match": true, + "adpingid_match": true, + "target_present": false, + "missing_target": true + } + ] + } } \ No newline at end of file diff --git a/index.html b/index.html index 1308d3e..70b8a25 100644 --- a/index.html +++ b/index.html @@ -456,6 +456,166 @@ document.body.append(link); link.click(); link.remove(); URL.revokeObjectURL(url); } + const mtgState = { filtered: [], page: 1 }; + + function money(value) { + return `$${Number(value || 0).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`; + } + + function mtgMatchStatus(record) { + if (!record.order_match) return { key: 'unmatched', label: '未关联订单' }; + if (record.missing_target) return { key: 'missing', label: '待搬单' }; + if (record.target_present) return { key: 'covered', label: '已覆盖' }; + return { key: 'matched', label: '已关联' }; + } + + function renderMtg1013() { + const data = state.data.mtg1013; + if (!data || !Array.isArray(data.records)) return; + const panel = el('section', 'panel workspace'); + panel.id = 'mtg1013Panel'; + const header = el('div', 'workspace-head'); + const head = el('div', 'panel-head'); + const title = el('div'); + title.append( + el('h2', '', 'MTG 10/13 投放表现'), + el('div', 'panel-desc', `数据源:${data.meta.source} · ${nf.format(data.meta.rows)} 条 Adping 明细 · 按 Pkg + 国家关联订单`) + ); + head.append(title); + + const summary = el('section', 'kpis'); + summary.append( + kpi('Valid Clicks', nf.format(data.meta.valid_clicks), `${nf.format(data.meta.rows)} 条明细`), + kpi('Postback Installs', nf.format(data.meta.installs), `安装率 ${data.meta.install_rate === null ? '-' : percent(data.meta.install_rate)}`), + kpi('Revenue', money(data.meta.revenue), `利润 ${money(data.meta.profit)}`, 'success'), + kpi('Cost', money(data.meta.cost), `${nf.format(data.meta.matched_order_rows)} 条已关联订单`), + kpi('ROAS', data.meta.roas === null ? '-' : percent(data.meta.roas), `${nf.format(data.meta.unmatched_order_rows)} 条未关联订单`) + ); + summary.style.marginBottom = '16px'; + + const filters = el('div', 'filters'); + const search = el('input', 'control'); + search.id = 'mtgSearch'; search.type = 'search'; search.placeholder = '搜索 Adping ID 或 Pkg'; search.autocomplete = 'off'; + const country = selectControl('mtgCountry', '全部国家'); + [...new Set(data.records.map(row => row.country))].sort().forEach(value => country.append(new Option(value, value))); + const match = selectControl('mtgMatch', ''); + [['all','全部关联状态'], ['matched','已关联订单'], ['missing','关联且待搬单'], ['covered','关联且已覆盖'], ['unmatched','未关联订单']] + .forEach(([value,label]) => match.append(new Option(label, value))); + const exportButton = el('button', 'button', '导出 MTG 数据'); + exportButton.id = 'mtgExport'; exportButton.type = 'button'; + filters.append(search, country, match, exportButton); + header.append(head, summary, filters); + + panel.append(header, el('div', 'result-meta'), el('div', 'table-wrap'), el('div', 'pagination')); + const footer = document.querySelector('footer'); + document.getElementById('app').insertBefore(panel, footer); + + search.addEventListener('input', () => { mtgState.page = 1; applyMtgFilters(); }); + country.addEventListener('change', () => { mtgState.page = 1; applyMtgFilters(); }); + match.addEventListener('change', () => { mtgState.page = 1; applyMtgFilters(); }); + exportButton.addEventListener('click', exportMtgCsv); + applyMtgFilters(); + } + + function applyMtgFilters() { + const query = document.getElementById('mtgSearch').value.trim().toLocaleLowerCase(); + const country = document.getElementById('mtgCountry').value; + const match = document.getElementById('mtgMatch').value; + mtgState.filtered = state.data.mtg1013.records.filter(row => { + const status = mtgMatchStatus(row).key; + const matched = match === 'all' + || status === match + || (match === 'matched' && row.order_match); + return (!query || `${row.adpingid} ${row.pkg}`.toLocaleLowerCase().includes(query)) + && (country === 'all' || row.country === country) + && matched; + }); + renderMtgResults(); + } + + function renderMtgResults() { + const panel = document.getElementById('mtg1013Panel'); + const totalPages = Math.max(1, Math.ceil(mtgState.filtered.length / PAGE_SIZE)); + mtgState.page = Math.min(mtgState.page, totalPages); + const start = (mtgState.page - 1) * PAGE_SIZE; + const rows = mtgState.filtered.slice(start, start + PAGE_SIZE); + const meta = panel.querySelector('.result-meta'); + meta.textContent = ''; + meta.append( + el('span', '', `筛选结果 ${nf.format(mtgState.filtered.length)} 条`), + el('span', '', `第 ${mtgState.page} / ${totalPages} 页`) + ); + + const wrap = panel.querySelector('.table-wrap'); + wrap.textContent = ''; + const table = el('table'); + const thead = el('thead'); const header = el('tr'); + ['Adping ID', 'Pkg', '国家', 'Valid Clicks', 'Postback Installs', '安装率', 'Revenue', 'Cost', '利润', 'ROAS', '订单关联', 'TaurusxDSP 状态'] + .forEach(label => header.append(el('th', '', label))); + thead.append(header); table.append(thead); + const tbody = el('tbody'); + if (!rows.length) { + const cell = el('td', 'empty', '没有符合当前条件的 MTG 记录'); cell.colSpan = 12; + const row = el('tr'); row.append(cell); tbody.append(row); + } + rows.forEach(record => { + const row = el('tr'); + const country = el('td'); country.append(el('span', 'country-pill', record.country)); + const match = mtgMatchStatus(record); + const orderStatus = el('td'); + orderStatus.append(el('span', `badge ${record.order_match ? 'covered' : 'target-only'}`, record.order_match ? (record.adpingid_match ? 'ID 已匹配' : '仅 Pkg_国家匹配') : '未关联')); + const targetStatus = el('td'); + targetStatus.append(el('span', `badge ${match.key === 'unmatched' ? 'target-only' : match.key}`, match.label)); + row.append( + el('td', 'pkg', record.adpingid), + el('td', 'pkg', record.pkg), + country, + el('td', '', nf.format(record.valid_clicks)), + el('td', '', nf.format(record.installs)), + el('td', '', record.install_rate === null ? '-' : percent(record.install_rate)), + el('td', '', money(record.revenue)), + el('td', '', money(record.cost)), + el('td', '', money(record.profit)), + el('td', '', record.roas === null ? '-' : percent(record.roas)), + orderStatus, + targetStatus + ); + tbody.append(row); + }); + table.append(tbody); wrap.append(table); + + const pager = panel.querySelector('.pagination'); + pager.textContent = ''; + const prev = el('button', 'page-button', '‹'); prev.type = 'button'; prev.disabled = mtgState.page <= 1; + const next = el('button', 'page-button', '›'); next.type = 'button'; next.disabled = mtgState.page >= totalPages; + prev.addEventListener('click', () => { mtgState.page -= 1; renderMtgResults(); panel.scrollIntoView({ behavior: 'smooth' }); }); + next.addEventListener('click', () => { mtgState.page += 1; renderMtgResults(); panel.scrollIntoView({ behavior: 'smooth' }); }); + pager.append(prev, el('span', 'panel-desc', `${mtgState.page} / ${totalPages}`), next); + } + + function exportMtgCsv() { + const headers = ['Adping ID', 'Pkg', '国家', 'Valid Clicks', 'Postback Installs', '安装率', 'Revenue', 'Cost', '利润', 'ROAS', '订单关联', 'TaurusxDSP状态']; + const rows = [headers, ...mtgState.filtered.map(record => [ + record.adpingid, + record.pkg, + record.country, + record.valid_clicks, + record.installs, + record.install_rate === null ? '' : record.install_rate, + record.revenue, + record.cost, + record.profit, + record.roas === null ? '' : record.roas, + record.order_match ? (record.adpingid_match ? 'ID已匹配' : '仅Pkg_国家匹配') : '未关联', + mtgMatchStatus(record).label + ])]; + const csv = '\ufeff' + rows.map(row => row.map(value => `"${String(value).replaceAll('"', '""')}"`).join(',')).join('\n'); + const url = URL.createObjectURL(new Blob([csv], { type: 'text/csv;charset=utf-8' })); + const link = document.createElement('a'); + link.href = url; link.download = `MTG1013_${new Date().toISOString().slice(0,10)}.csv`; + document.body.append(link); link.click(); link.remove(); URL.revokeObjectURL(url); + } + fetch(`data.json?v=${Date.now()}`, { cache: 'no-store' }) .then(response => { if (!response.ok) throw new Error(`HTTP ${response.status}`); @@ -465,6 +625,7 @@ if (!data.meta || !Array.isArray(data.records)) throw new Error('data.json 格式不正确'); state.data = data; renderShell(); + renderMtg1013(); }) .catch(error => { const app = document.getElementById('app');