68 lines
4.1 KiB
Markdown
68 lines
4.1 KiB
Markdown
---
|
||
title: 数仓架构与选表规则
|
||
source_status: warehouse_standard_learning_reference(分层定义)+ user_confirmed_agent_rule(选表/分区/依赖规则)
|
||
---
|
||
|
||
# 数仓架构与选表规则
|
||
|
||
范围:`wanshifu_dw` 库。`wanshifu_enterprise` 库被明确排除——不查询、不作为血缘起点、不作为 SQL 来源。
|
||
|
||
## 1. 分层定义
|
||
|
||
| 层 | 作用 | 设计要点 |
|
||
|---|---|---|
|
||
| ODS | 源对齐的接入数据,保留源系统粒度和字段 | 新套增量:`ods_*_inc_v`(每日变化)+ `ods_*_v`(合并后全量最新);新套全量:`ods_*_d_v`(按 `etl_date` 分区的每日全量快照) |
|
||
| DWD | 清洗整合后的原子事实或宽表属性 | 保持原子粒度、不做聚合、保留业务时间、补齐统一维度 |
|
||
| DWS | 可复用的主题级汇总和通用基础指标 | 从明细/公共层聚合;存基础指标,不存场景化衍生指标 |
|
||
| DIM | 可复用的业务维度和代码映射 | — |
|
||
| ADS | 场景化的数据服务、报表、抽数 | — |
|
||
| MID | 供多个分析师 ADS 输出共享的中间指标结果 | MID 不能依赖 MID(见下文层间依赖) |
|
||
|
||
业务域缩写:`mst`=master(师傅)、`usr`=user(用户)、`etp`=enterprise(企业)、`order`=order(订单)、`bas`=basic(基础)、`fmis`=finance(财务)、`kf`=customer_service(客服)。
|
||
|
||
> 分层定义仅作数仓设计理解,用于对候选表做优先级排序,不能替代 DDL 和表级已验证知识;与分析师规则冲突时以分析师规则为准。
|
||
|
||
## 2. 选表规则
|
||
|
||
**总体优先级:**满足所需字段和业务粒度 > 数据质量和成熟度已验证 > (临时查询)优先用完整新套合并/全量 ODS,排在新旧套 DWD 之前 > (调度脚本)拒绝 ODS,用允许的公共层 > 优先新套公共层。
|
||
|
||
| 场景 | 典型链路 | 分析师应选 | 避免 |
|
||
|---|---|---|---|
|
||
| 旧套增量源 | `ods_*_inc` → `dwd_*_inc_d` → `dwd_*` | 下游全量非增量 DWD 表 | `ods_*_inc`、`dwd_*_inc_d` |
|
||
| 新套增量源 | `ods_*_inc_v` → `ods_*_v` | 直接用合并后的全量 `ods_*_v`(临时分析不必再走到 DWD) | `ods_*_inc_v` |
|
||
| 新套全量快照 | `ods_*_d_v` | 直接用该 ODS 的最新快照分区(通常 T-1) | — |
|
||
|
||
- 新套表缺所需字段时,才回退选用完整的旧套表。
|
||
- 同优先级出现多个同样合适的 `_v` 候选时,必须人工确认,不能自动选一个。
|
||
- 表名后缀优先级只是候选启发式,不是最终选表依据——最终仍要核对字段和已验证的表级知识。
|
||
|
||
## 3. 分区语义
|
||
|
||
| 语义 | 典型表 | 典型分区 | 查询规则 |
|
||
|---|---|---|---|
|
||
| 每日全量快照 | `ods_*_d_v` | `etl_date` | 取最新分区,通常 `etl_date = T-1`;一个分区是当天的完整快照 |
|
||
| 业务时间分区 | 如下单日期、活跃日期 | 业务日期 | 按需求要求的业务时间范围过滤,不能只取 T-1 当全量快照;需求未指定范围时必须询问用户,**不得默认查近三年** |
|
||
| 历史遗留分桶 | 部分数仓模型 | `20171231` | 2017 年及以前的记录可能被塞进这一个分区;查询范围涉及 2017 年及以前时,先查表级模型再写 SQL |
|
||
|
||
**强制规则:**
|
||
|
||
- 每张物理分区表都要过滤真实的分区字段。
|
||
- 非分区表允许全表扫描,不能为它虚构分区或时间条件。
|
||
- 业务时间过滤和分区过滤是两件事,要分别落实,不能互相替代。
|
||
|
||
## 4. 层间依赖边界
|
||
|
||
| 场景 | 允许的来源层 | 禁止的来源层 |
|
||
|---|---|---|
|
||
| 分析师临时查询 | DWD、DWS、DWM、DIM、ODS(兜底可用) | — |
|
||
| 分析师调度脚本(ADS/MID) | DWD、DWS、DWM、DIM、MID | ODS、ADS、其他脚本的临时表(无例外) |
|
||
| 数仓设计参考(非当前 Skill 强约束) | DWD←ODS/DIM;DWS←DWD/DWM/DIM/DWS;DIM←ODS/MySQL | — |
|
||
|
||
- **MID 不能依赖另一个 MID**(已用户确认)。
|
||
- 数仓设计参考里的依赖关系仅作学习背景,不是当前 Agent 规则的强约束来源。
|
||
|
||
## 相关
|
||
|
||
- SQL 层面的安全和格式规范见 [sql-rules.md](sql-rules.md)。
|
||
- 上述规则的冲突裁决和历史确认记录见 [decisions.md](decisions.md)。
|