39 lines
2.7 KiB
Markdown
39 lines
2.7 KiB
Markdown
|
|
# Skill: tm_region_coverage_m 行政区域覆盖聚合月表计算指导 (严谨矩阵版)
|
|||
|
|
|
|||
|
|
## 1. 实现目标
|
|||
|
|
按省、市、区县、全国行政层级汇总覆盖统计指标,支撑多维管理报表。
|
|||
|
|
|
|||
|
|
## 2. 计算拓扑 (Topology)
|
|||
|
|
- **计算执行环境**:**HiveSQL**。
|
|||
|
|
- **基本架构**:采用分层聚合(District -> City -> Province -> Nation)后执行 `UNION ALL`。
|
|||
|
|
- **数据流向 (二级聚合)**:
|
|||
|
|
1. 输入 A:`tm_grid_coverage_m *` (提供基础栅格指标)。
|
|||
|
|
2. 输入 B:`td_region #` (提供行政编码回填映射)。
|
|||
|
|
|
|||
|
|
## 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 #` 已入库且处于有效状态。
|