Pārlūkot izejas kodu

refactor(report): 优化自定义报告数据处理逻辑

- 移除大量旧版自定义报告配置,简化配置文件内容
- 对报表记录中 stat_time_hour 字段解析后替换为 hour 字段
- 统一时间字段处理逻辑,提升数据处理一致性
- 保留部分核心指标和维度,方便后续配置扩展
hpk 3 mēneši atpakaļ
vecāks
revīzija
b61a376111

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/CustomReportServiceImpl.java

@@ -155,6 +155,11 @@ public class CustomReportServiceImpl implements ICustomReportService {
                             if (statTimeDay != null) {
                                 record.put("stat_time_day", statTimeDay.replace("-", ""));
                             }
+                            String statTimeHour = record.getString("stat_time_hour");
+                            if (statTimeHour != null) {
+                                record.put("hour", Integer.valueOf(statTimeHour.substring(11, 13)));
+                                record.remove("stat_time_hour");
+                            }
 
                             // 8. 添加 advertiser_id
                             record.put("advertiser_id", advertiserId);

+ 0 - 120
job-bytedance/src/main/resources/custom-report-config.json

@@ -1,124 +1,4 @@
 {
-  "account_hour": {
-    "dataTopic": "BASIC_DATA",
-    "dimensions": ["stat_time_day", "stat_time_hour"],
-    "metrics": [
-      "stat_pay_amount", "stat_cost", "active", "download_finish_cnt",
-      "attribution_next_day_open_cnt", "game_addiction",
-      "attribution_game_in_app_ltv_1day", "attribution_deep_convert_cnt",
-      "game_pay_count", "convert_cnt", "show_cnt", "active_pay",
-      "click_cnt", "click_start_cnt", "attribution_convert_cnt",
-      "deep_convert_cnt", "valid_play",
-      "attribution_billing_game_in_app_ltv_1day",
-      "attribution_micro_game_0d_ltv", "attribution_micro_game_3d_ltv",
-      "attribution_micro_game_7d_ltv", "stat_micro_game_0d_amount"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_advertiser_report_hour"
-  },
-  "account_daily": {
-    "dataTopic": "BASIC_DATA",
-    "dimensions": ["stat_time_day"],
-    "metrics": [
-      "stat_pay_amount", "stat_cost", "active", "download_finish_cnt",
-      "attribution_next_day_open_cnt", "game_addiction",
-      "attribution_game_in_app_ltv_1day", "attribution_deep_convert_cnt",
-      "game_pay_count", "convert_cnt", "show_cnt", "active_pay",
-      "click_cnt", "click_start_cnt", "attribution_convert_cnt",
-      "deep_convert_cnt", "valid_play",
-      "attribution_billing_game_in_app_ltv_1day",
-      "attribution_micro_game_0d_ltv", "attribution_micro_game_3d_ltv",
-      "attribution_micro_game_7d_ltv", "stat_micro_game_0d_amount"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_advertiser_report_daily"
-  },
-  "promoter_hour": {
-    "dataTopic": "BASIC_DATA",
-    "dimensions": [
-      "stat_time_day", "stat_time_hour",
-      "cdp_project_id", "cdp_project_name",
-      "cdp_promotion_id", "cdp_promotion_name",
-      "aweme_id", "aweme_nick_name"
-    ],
-    "metrics": [
-      "stat_pay_amount", "stat_cost", "active", "download_finish_cnt",
-      "attribution_next_day_open_cnt", "game_addiction",
-      "attribution_game_in_app_ltv_1day", "attribution_deep_convert_cnt",
-      "game_pay_count", "convert_cnt", "show_cnt", "active_pay",
-      "click_cnt", "click_start_cnt", "attribution_convert_cnt",
-      "deep_convert_cnt", "valid_play",
-      "attribution_billing_game_in_app_ltv_1day",
-      "attribution_micro_game_0d_ltv", "attribution_micro_game_3d_ltv",
-      "attribution_micro_game_7d_ltv", "stat_micro_game_0d_amount"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_promoter_report_hour"
-  },
-  "promoter_daily": {
-    "dataTopic": "BASIC_DATA",
-    "dimensions": [
-      "stat_time_day",
-      "cdp_project_id", "cdp_project_name",
-      "cdp_promotion_id", "cdp_promotion_name",
-      "aweme_id", "aweme_nick_name"
-    ],
-    "metrics": [
-      "stat_pay_amount", "stat_cost", "active", "download_finish_cnt",
-      "attribution_next_day_open_cnt", "game_addiction",
-      "attribution_game_in_app_ltv_1day", "attribution_deep_convert_cnt",
-      "game_pay_count", "convert_cnt", "show_cnt", "active_pay",
-      "click_cnt", "click_start_cnt", "attribution_convert_cnt",
-      "deep_convert_cnt", "valid_play",
-      "attribution_billing_game_in_app_ltv_1day",
-      "attribution_micro_game_0d_ltv", "attribution_micro_game_3d_ltv",
-      "attribution_micro_game_7d_ltv", "stat_micro_game_0d_amount"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_promoter_report_daily"
-  },
-  "material_daily": {
-    "dataTopic": "BASIC_DATA",
-    "dimensions": [
-      "stat_time_day",
-      "cdp_project_id", "cdp_project_name",
-      "cdp_promotion_id", "cdp_promotion_name",
-      "material_id", "image_mode",
-      "ad_platform_material_name", "ad_platform_material_content"
-    ],
-    "metrics": [
-      "stat_pay_amount", "stat_cost", "active", "download_finish_cnt",
-      "attribution_next_day_open_cnt", "game_addiction",
-      "attribution_game_in_app_ltv_1day", "attribution_deep_convert_cnt",
-      "game_pay_count", "convert_cnt", "show_cnt", "active_pay",
-      "click_cnt", "click_start_cnt", "attribution_convert_cnt",
-      "deep_convert_cnt", "valid_play",
-      "attribution_billing_game_in_app_ltv_1day",
-      "attribution_micro_game_0d_ltv", "attribution_micro_game_3d_ltv",
-      "attribution_micro_game_7d_ltv"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_material_report_daily"
-  },
-  "product_daily": {
-    "dataTopic": "PRODUCT_DATA",
-    "dimensions": [
-      "product_id", "ad_platform_product_name",
-      "stat_time_day",
-      "cdp_project_id", "cdp_promotion_id",
-      "product_platform_id",
-      "ad_platform_product_platform_name",
-      "ad_platform_product_first_category_name",
-      "ad_platform_product_sub_category_name",
-      "ad_platform_product_third_category_name"
-    ],
-    "metrics": [
-      "stat_cost", "show_cnt", "click_cnt",
-      "convert_cnt", "deep_convert_cnt"
-    ],
-    "dorisDatabase": "media_api",
-    "dorisTable": "bytedance_product_report_daily"
-  },
   "uni_project_daily": {
     "dataTopic": "UNI_PROJECT_DATA",
     "dimensions": ["stat_time_day", "cdp_project_id", "cdp_project_name"],