2.7 KiB
2.7 KiB
Skill: tm_region_coverage_m 行政区域覆盖聚合月表计算指导 (严谨矩阵版)
1. 实现目标
按省、市、区县、全国行政层级汇总覆盖统计指标,支撑多维管理报表。
2. 计算拓扑 (Topology)
- 计算执行环境:HiveSQL。
- 基本架构:采用分层聚合(District -> City -> Province -> Nation)后执行
UNION ALL。 - 数据流向 (二级聚合):
- 输入 A:
tm_grid_coverage_m *(提供基础栅格指标)。 - 输入 B:
td_region #(提供行政编码回填映射)。
- 输入 A:
3. 字段映射矩阵 (The Matrix)
| 目标字段 | 类型 | OTT 分支逻辑 (indoor_flag = -1) | MR 分支逻辑 (indoor_flag = 0/1) | 备注 |
|---|---|---|---|---|
region_level |
VARCHAR | 根据聚合分支固定: nation/province/city/district |
同 OTT 分支 | - |
region_code |
BIGINT | 关联回填:根据当前层级关联 td_region.region_code |
关联回填:根据当前层级关联 td_region.region_code |
见原语说明 |
indoor_flag |
SMALLINT | 固定值 -1 | 原始值 (0 或 1) | - |
user_cnt |
BIGINT | approx_count_distinct(device_id_list) |
0 | 必须跨栅格去重 |
avgrsrp |
DECIMAL | SUM(totalrsrp) / SUM(rsrpcount) |
SUM(totalrsrp) / SUM(rsrpcount) |
基于栅格累加 |
grid_count |
BIGINT | COUNT(DISTINCT regionid) |
COUNT(DISTINCT regionid) |
总栅格数等同于采样栅格数 |
mr_grid_count |
BIGINT | COUNT(DISTINCT regionid) |
有采样栅格总数 (作为达标率的分母) | |
covered_grid_count_105 |
BIGINT | SUM(is_covered_105) |
达标栅格总数 (作为 105 达标率的分子) | |
covered_grid_count_110 |
BIGINT | SUM(is_covered_110) |
达标栅格总数 (作为 110 达标率的分子) | |
grid_cover_rate_105 |
DECIMAL | covered_grid_count_105 / mr_grid_count |
行政区域级栅格达标率 (-105) | |
grid_cover_rate_110 |
DECIMAL | covered_grid_count_110 / mr_grid_count |
行政区域级栅格达标率 (-110) |
4. 关键计算原语 (Primitives)
- 编码动态回填逻辑:
- 区县级聚合时:
JOIN td_region ON grid.districtcode = td_region.districtcode。 - 地市级聚合时:
JOIN td_region ON grid.citycode = td_region.citycode AND region_level = 'city'。 - 省级聚合时:
JOIN td_region ON grid.provincecode = td_region.provincecode AND region_level = 'province'。
- 区县级聚合时:
- 去重原语:在任何非栅格粒度上统计用户数,必须显式调用
approx_count_distinct。
5. 存储与优化规范
- 计算完成后同步入库 PG
tm_region_coverage_m。 - 必须确保
td_region #已入库且处于有效状态。