Ver código fonte

补充实验分桶报表文件说明

刘立冬 1 semana atrás
pai
commit
4adfc9be6d
1 arquivos alterados com 94 adições e 0 exclusões
  1. 94 0
      AGENTS.md

+ 94 - 0
AGENTS.md

@@ -0,0 +1,94 @@
+# 实验分桶报表说明
+
+本目录保存 `apptype=4` 的实验分桶报表。实验组为 `rootSessionId` 倒数第四位是 `0`、`1` 的用户,其余 `2-f` 共 14 桶为对照组。
+
+## 统一统计口径
+
+- 分桶字段:`LOWER(SUBSTR(rootSessionId, LENGTH(rootSessionId) - 3, 1))`,只保留 `0-f`。
+- 实验组:尾号 `0`、`1`;对照组:其余 14 个尾号。
+- 头部:`pagesource RLIKE 'user-videos-share$'`。
+- 推荐:`pagesource RLIKE '(detail|category|recommend)$'`。
+- 全部:不限制 `pagesource`。
+- 曝光:`businesstype='videoView'`,统计 PV 和去重 `mid` UV。
+- 播放:`businesstype='videoPlay'`,统计 PV 和去重 `mid` UV。
+- 分享:`businesstype='videoShareFriend'`,统计 PV 和去重 `mid` UV。
+- 回流:分享记录与同日 `topic='click'` 记录按 `shareid` 关联,统计去重点击用户 `machinecode` UV。
+- STR:分享 PV / 曝光 PV。
+- ROV:回流 UV / 曝光 PV。
+- 人均指标:曝光、播放、分享 PV 或回流 UV除以同桶 DAU。
+- DAU 相对变化:实验组每桶平均 DAU相对对照组每桶平均 DAU的变化率,避免直接比较 2 桶总量和 14 桶总量。
+- 每个日期输出 20 行:16 行尾号明细、2 行分组聚合、2 行每桶均值。
+- 事实值(DAU、PV、UV)保存为整数;比例列按既有实时报表格式输出。
+
+## SQL 文件
+
+### `bucket_source_pv_uv_return_realtime_20260721_apptype4_version1578.sql`
+
+查询 2026-07-21 当天的实时数据,限定 `apptype=4`、`versioncode=1578`。
+
+- DAU:`loghubods.useractive_log_per5min`。
+- 曝光、播放、分享:`loghubods.video_action_log_flow`。
+- 分享与回流:`loghubods.user_share_log_per5min`。
+- 输出粒度:16 个尾号,每个尾号一行原始事实数据。
+- 日期、版本和实时表分区条件写在 SQL 中;复用到其他日期或版本时需要同步修改。
+
+### `bucket_source_pv_uv_return_offline_20260716_20260720_apptype4_all_versions.sql`
+
+查询 2026-07-16 至 2026-07-20 的离线数据,限定 `apptype=4`,不限制版本号。
+
+- DAU:`loghubods.useractive_log`,与实时 SQL 一致,从 `extparams.rootSessionId` 取分桶字段。
+- 曝光、播放、分享:`loghubods.video_action_log_applet`。
+- 分享与回流:`loghubods.user_share_log`。
+- 所有事实按 `dt` 和尾号分别聚合,不跨天去重或合并。
+- 原始输出粒度:5 天 × 16 个尾号,共 80 行。
+- 输出仍保留版本号字段,统一写为“全部”,以便与限定版本的实时报表对齐。
+
+### `offline_dau_by_bucket_20260716_20260720_apptype4.sql`
+
+只补查五天离线 DAU,用于事实指标已经查询完成时快速重建报表,避免重复执行完整事实 SQL。
+
+- 数据源:`loghubods.useractive_log`。
+- 分桶字段:`GET_JSON_OBJECT(extparams, '$.rootSessionId')` 的倒数第四位。
+- 输出粒度:日期 × 16 个尾号,共 80 行。
+- 不限制版本号。
+
+## Python 脚本
+
+### `run_bucket_source_pv_uv_return_realtime.py`
+
+实时报表执行和格式化脚本。
+
+- 默认执行实时 SQL,将英文字段映射为中文字段。
+- 生成尾号明细、实验/对照聚合、实验/对照每桶均值。
+- 计算头部、推荐、全部三个场景的人均指标、STR、ROV及相对对照组变化率。
+- 输出 `bucket_source_pv_uv_return_realtime_20260721_apptype4_version1578.csv`。
+- `python3 run_bucket_source_pv_uv_return_realtime.py --rebuild`:不查询 ODPS,使用现有 CSV 重新计算比率列及列顺序。
+
+### `run_bucket_source_offline_5day_report.py`
+
+五天离线报表执行和格式化脚本,复用实时脚本的字段映射、公式和列顺序,保证离线 CSV 与实时 CSV 完全同构。
+
+- 默认执行完整离线 SQL,并按日期分别生成每天 20 行的结果。
+- 输出按日期倒序排列,共 100 行。
+- 版本号列保留并统一写为“全部”。
+- 输出 `bucket_source_full_report_offline_20260716_20260720_apptype4_all_versions.csv`。
+- `python3 run_bucket_source_offline_5day_report.py --rebuild-with-dau`:保留现有 CSV 中的曝光、播放、分享、回流事实,只执行 DAU 补查 SQL,再重新生成聚合、均值、比率和变化率。使用此模式前必须已有包含 80 行尾号明细的离线 CSV。
+
+两个脚本都依赖 `pandas` 以及本地运行环境提供的 `odps_module.ODPSClient`。包含访问凭据的连接配置不得提交到 Git。
+
+## 输出文件
+
+### `bucket_source_pv_uv_return_realtime_20260721_apptype4_version1578.csv`
+
+2026-07-21、版本 1578 的实时完整报表,共 20 行。
+
+### `bucket_source_full_report_offline_20260716_20260720_apptype4_all_versions.csv`
+
+2026-07-16 至 2026-07-20、全部版本的离线完整报表,共 100 行。列名、列顺序和指标维度与实时 CSV 一致。
+
+## 修改日期或版本时
+
+1. 同步修改 SQL 文件中的日期分区条件和输出日期。
+2. 实时报表需要同步修改 `versioncode` 和输出版本号;离线全版本报表不要增加版本过滤。
+3. 同步修改 Python 脚本顶部的 SQL、CSV 文件名常量。
+4. 执行后校验每个日期是否有 16 个尾号、20 行完整结果,事实值是否为整数,离线与实时列名及顺序是否一致。