# Skill: tm_grid_coverage_m 栅格级覆盖指标月表计算指导 (严谨矩阵版) ## 1. 实现目标 计算 20m 栅格粒度的综合覆盖指标,整合 OTT 全网大盘与 MR 本网明细数据。 ## 2. 计算拓扑 (Topology) - **计算执行环境**:**HiveSQL**。 - **基本架构**:采用 `MR 分支 (indoor_flag ∈ {0, 1})` UNION ALL `OTT 分支 (indoor_flag = -1)`。 ## 3. 维度缺省值规范 - 对于不具备小区级信息的 OTT 分支,`cellkey`、`pci` 统一填充 `-1`。 - 对于 OTT 不具备的频段信息,`freq` 填充 `'all'`。 ## 4. 字段映射矩阵 (The Matrix) | 目标字段 | 类型 | OTT 分支逻辑 (indoor_flag = -1) | MR 分支逻辑 (indoor_flag = 0/1) | 缺省处理 | | :--- | :--- | :--- | :--- | :--- | | **`year_month`** | VARCHAR | 原始字段 | 原始字段 | - | | **`data_type`** | INTEGER | 原始值 (1:数准, 2:腾讯) | **固定值 -1** | - | | **`regionid`** | BIGINT | 原始字段 | 原始字段 | - | | **`operator_name`** | VARCHAR | **固定值 'telecom'** (需先过滤 OTT 原始数据) | **固定值 'telecom'** | - | | **`network_class`** | VARCHAR | 原始字段 | 依据表源判定 ('4G' 或 '5G_SA') | - | | **`freq`** | VARCHAR | 原始字段 | 原始字段 | `'all'` | | **`indoor_flag`** | SMALLINT | **固定值 -1** | 原始值 (0 或 1) | - | | **`rsrpcount`** | BIGINT | `SUM(rsrpcount)` | 4G: `SUM(rsrpcount)`
5G: `SUM(ssrsrpcount)` | **严禁混淆 4/5G 采样点字段** | | **`mr_cover_rate_105`**| DECIMAL | `rsrpgoodcount_105 / rsrpcount` | 栅格内采样点达标率 | | **`mr_cover_rate_110`**| DECIMAL | `rsrpgoodcount_110 / rsrpcount` | 栅格内采样点达标率 | | **`is_covered_105`** | SMALLINT | `CASE WHEN (rsrpgoodcount_105 / rsrpcount) >= 0.9 THEN 1 ELSE 0 END` | **栅格达标标记** (105口径) | | **`is_covered_110`** | SMALLINT | `CASE WHEN (rsrpgoodcount_110 / rsrpcount) >= 0.9 THEN 1 ELSE 0 END` | **栅格达标标记** (110口径) | | **`totalrsrp`** | DECIMAL | `SUM(totalrsrp)` | `SUM(totalrsrp)` | - | | **`avgrsrp`** | DECIMAL | `SUM(totalrsrp) / SUM(rsrpcount)` | `SUM(totalrsrp) / SUM(rsrpcount)` | - | | **`top1_cellkey`** | VARCHAR | **NULL** | `FIRST_VALUE(cellkey) OVER (PARTITION BY regionid ORDER BY rsrpcount DESC)` | - | | **`overlap_mrcount`** | BIGINT | **0** | `SUM(overlap_mrcount)` | - | ## 5. 关键计算原语 (Primitives) - **聚合方式**:必须基于原始累加值(total)和计数(count)进行聚合,严禁直接对均值字段执行 `AVG()`。 - **空值污染防护**:非本源支持的指标(如 OTT 分支的网络质差项)必须硬编码为 `NULL` 或 `0`。 ## 6. 特殊业务过滤 - 依据 `openspec.md`,忽略所有市场份额、驻留比、高价值、VIP 相关字段,脚本中直接置空。