feat(scripts): 支持动态指标和维度参数配置

为 build_studio_urls.py 添加指标和维度的可配置支持,包括:
- 新增 metrics.json 和 dimensions.json 映射文件加载
- 支持中文/英文别名映射及指标代码透传
- 列别名扩展以识别"指标"和"维度"列
- 空值时自动回退到 CONFIG 默认值
This commit is contained in:
2026-08-24 15:28:48 +08:00
parent ba00651fa9
commit b8bd749f43
16 changed files with 996 additions and 36 deletions

View File

@@ -21,10 +21,12 @@
| entity_type 实体类型 | 否 | 实体类型 / 类型 / entity_type / type | 群组 |
| period 数据周期 | **是** | 数据周期 / 周期 / period / time_period / 日期范围 | 2026.08.01-2026.08.31 |
| countries 国家 | 否 | 国家 / 国家/地区 / countries / country / 筛选国家 / 地区 | 美国,日本 |
| metric 指标 | 否 | 指标 / 主指标 / 数据指标 / metric / 指标名 | 观看时长 |
| dimension 维度 | 否 | 维度 / 细分维度 / dimension / 细分 | 地理位置 |
> 注意:
> - 「所有者名称 / 实体名称」只进输出回显,不参与 URL 拼装,缺列不影响生成。
> - **必要列只有两列所有者ID、数据周期**。
> - **必要列只有两列所有者ID、数据周期**。指标列留空则用脚本 `CONFIG` 默认主指标。
## 3. 数据周期格式
@@ -56,16 +58,16 @@
## 6. 完整示例(对应 assets/需求输入示例.xlsx
| 所有者名称 | 所有者ID | 实体类型 | 实体名称 | 实体ID | 数据周期 | 国家 |
|---|---|---|---|---|---|---|
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-1 | NCy9C2QPQ1E | 2026.08.01-2026.08.31 | 美国 |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-2 | NCyxxxxxxxxx | 2026.8.1-2026.8.31 | 美国,日本 |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-3 | NCyYYYYYYYYY | 2026.07.01-2026.07.31 | GB,DE,FR |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 所有者 | 账号整体 | (留空) | 2026.06.01-2026.06.30 | US |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 频道 | 示例频道 | UCxxxxxUCxxxxx | 2026.08.01-2026.08.15 | 日本 |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 节目 | 示例节目 | video123456 | 2026.08.01-2026.08.31 | 韩国,日本 |
| 所有者名称 | 所有者ID | 实体类型 | 实体名称 | 实体ID | 数据周期 | 国家 | 指标 | 维度 |
|---|---|---|---|---|---|---|---|---|
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-1 | NCy9C2QPQ1E | 2026.08.01-2026.08.31 | 美国 | 观看时长 | (留空,走默认) |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-2 | NCyxxxxxxxxx | 2026.8.1-2026.8.31 | 美国,日本 | (留空,走默认) | 地理位置 |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 群组 | 示例群组-3 | NCyYYYYYYYYY | 2026.07.01-2026.07.31 | GB,DE,FR | 预计收益 | (留空,走默认) |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 所有者 | 账号整体 | (留空) | 2026.06.01-2026.06.30 | US | (留空,走默认) | 内容 |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 频道 | 示例频道 | UCxxxxxUCxxxxx | 2026.08.01-2026.08.15 | 日本 | 外部展示 | (留空,走默认) |
| 示例内容所有者 | bqSUnNpU67xJ51TxH4PKpQ | 节目 | 示例节目 | video123456 | 2026.08.01-2026.08.31 | 韩国,日本 | (留空,走默认) | (留空,走默认) |
覆盖场景:单/多国家、中文名与 ISO 代码混用、四种实体类型、带/不带前导零的日期、所有者场景留空实体ID。
覆盖场景:单/多国家、中文名与 ISO 代码混用、四种实体类型、带/不带前导零的日期、所有者场景留空实体ID、指标可选(中文名或留空走默认)、维度可选(中文名或留空走默认)
## 7. 制作核对清单
@@ -74,6 +76,8 @@
- [ ] 群组/频道/节目行已填实体ID所有者行可留空实体ID。
- [ ] 中文国家名已在 countries.json 中,否则改用两位 ISO 代码。
- [ ] 多国分隔符正确。
- [ ] 指标列:中文名/英文名已在 metrics.json 中,或用已知指标代码;留空表示走默认。
- [ ] 维度列:中文名已在 dimensions.json 中,或用已知维度代码;留空表示走默认。
- [ ] 试跑无失败行、无「缺必要列」错误。
试跑命令(项目根目录):
@@ -81,3 +85,36 @@
```bash
uv run python scripts\build_studio_urls.py -i <输入文件> -o <输出csv>
```
## 8. 指标格式
指标列(`指标` / `主指标` / `数据指标` / `metric`**每行可选**,决定 URL 的主指标 `metric` 参数与排序字段 `o_column`
- **留空**:用脚本 `CONFIG["metric"]` 默认主指标(`SUBSCRIBERS_NET_CHANGE`),排序字段用 `CONFIG["o_column"]`
- **中文/英文名**:须在 `scripts/metrics.json` 映射内(可自行扩充),如 `观看时长``EXTERNAL_WATCH_TIME``预计收益``TOTAL_ESTIMATED_EARNINGS`
- **指标代码**:已知代码原样透传,大小写不敏感,如 `external_views``EXTERNAL_VIEWS`
`metrics.json` 内已覆盖完整清单(与 `assets/YouTube_Studio_细分维度_时间颗粒度_完整清单.xlsx` 的「数据指标」表一致57 条),并额外收编了常用别名。下面仅列一部分;完整可用映射见该文件,也可自行扩充:
| 中文名 | 指标代码 | 说明 |
|---|---|---|
| 订阅人数 / 订阅净增长 | SUBSCRIBERS_NET_CHANGE | 主指标/排序默认 |
| 观看次数 | EXTERNAL_VIEWS | 表格列指标 |
| 观看时长(小时) | EXTERNAL_WATCH_TIME | 表格列指标 |
| 估算的合作伙伴收入 / 预计收益 / 税前收益 / 税前收入 | TOTAL_ESTIMATED_EARNINGS | 表格列指标 |
| 平均观看时长 | AVERAGE_WATCH_TIME | 表格列指标 |
| 发布的视频数 | VIDEO_COUNT_FIRST_PUBLISHED | 表格列指标 |
> 指标只影响 `metric` 与 `o_column``t_metrics`(表格列指标集合)、粒度等仍是 `CONFIG` 固定值。
## 9. 细分维度
维度列(`维度` / `细分维度` / `dimension`**每行可选**,决定 URL 的 `dimension` 参数。
- **留空**:用脚本 `CONFIG["dimension"]` 默认细分维度(`USER`,即「频道」)。
- **中文名**:须在 `scripts/dimensions.json` 映射内(可自行扩充),如 `内容``VIDEO``地理位置``COUNTRY``频道``USER`
- **维度代码**:已知代码原样透传,大小写不敏感,如 `video``VIDEO`
`dimensions.json` 内已覆盖完整清单与「细分维度」表一致33 条),例如:内容 `VIDEO`、流量来源 `TRAFFIC_SOURCE_TYPE`、地理位置 `COUNTRY`、频道 `USER`、资产 `ASSET`、设备类型 `DEVICE_PLATFORM_TYPE`、操作系统 `DEVICE_OS_TYPE`、收入来源 `EARNINGS_SOURCE_ALL`、日期 `DAY` 等。
> 维度只影响 `dimension` 参数;`metric`、`t_metrics`、粒度等不受影响。