大数据, 精选文章

团队建模规范

适用范围:所有数据开发、数仓工程师、数据产品经理
核心原则:上游稳定,下游灵活;分层解耦,按需演进

一、整体架构与分层职责

层级职责禁止行为
ODS贴源层,保留原始结构,不做清洗不得删除字段、不得做业务逻辑处理
DWD面向核心实体的原子明细层,清洗、标准化、退化维度、Array存ID不得聚合、不得因ADS需求变更而修改
DWS轻度聚合层,提供通用指标(总数、覆盖率、最大值等)不得多维GROUP BY、不得存明细、不得被DWT反向依赖
DWT主题画像层,存放稳定个体/群体特征不得放临时标签、不得直接修改原表(需用_enhanced)
ADS唯一出口层,按需宽表、拍平Array、格式化字段严禁直连ODS/DWD/DWS/DWT,必须通过ADS查询或导出

📌 依赖方向
DWD → DWS / DWT
DWS → DWT_enhanced
DWD/DWS/DWT → ADS
禁止循环依赖!

二、命名规范

层级规则示例
ODSrealtime_ods.ods_<库别名>_<表名>_fullods_crm_company_full
DWDrealtime_dwd.dwd_<业务域>_<实体>_fulldwd_company_base_full
DWSrealtime_dws.dws_<主题>_<维度>dws_company_summary
DWTrealtime_dwt.dwt_<主体>_profiledwt_company_profile
DWT(增强)..._profile_enhanceddwt_company_profile_enhanced
ADSrealtime_ads.ads_<场景>_<主体>_<用途>ads_sales_company_list

三、字段设计规范

IDxxx_idcompany_id
名称xxx_namecompany_name
编码xxx_codeprovince_code
数量xxx_countpatent_count
比率xxx_ratecontact_valid_rate
时间xxx_timeetl_time
标志位is_xxxis_valid
来源/标签xxx_codes ARRAY<VARCHAR>source_codes,tag_codes

⚠️ Array 存 ID,不存 name!
✅ 预计算常用标志位:is_valid = ARRAY_CONTAINS(tag_codes, 'valid')

四、码值管理规范(必须遵守)

1. 禁止直接使用业务系统 UUID 或原始码值

  • UUID 可读性差、性能差、无法跨系统统一

2. 必须使用数仓标准码值体系

  • 维度表:realtime_dim.dim_status(含 status_id, status_code, status_name
  • 映射表:realtime_dim.dim_code_mapping(桥接业务系统 → 数仓码值)

3. DWD 层必须完成码值转换

-- 正确示例
SELECT 
  map.target_code_id AS status_id,
  map.target_code_value AS status_code
FROM ods_table o
JOIN dim_code_mapping map 
  ON map.source_system = 'crm'
  AND map.source_code_type = 'contact_status'
  AND map.source_code_value = o.status_uuid;

4. ADS 层可直接使用中文名

SELECT s.status_name 
FROM dwd_table d
JOIN dim_status s ON d.status_id = s.status_id;

五、数据安全与合规

敏感字段类型处理方式说明
身份证号删除 或 SHA256除非业务强依赖,否则建议删除
手机号脱敏(如 138****1234)在 DWD 层完成
邮箱脱敏(如 user@***.com)保留前缀,隐藏域名
其他 PII评估后脱敏或删除遵循《个人信息保护法》《GDPR》

✅ 所有脱敏规则必须在《清洗规则表.xlsx》中明确定义

六、演进型建模机制

场景:需新增群体特征(如“所在省高潜企业密度”)

正确路径:

  1. 保持基础 DWT 不变dwt_company_profile
  2. 新增 DWS 聚合dws_province_high_potential_summary
  3. 创建增强 DWTdwt_company_profile_enhanced
  4. ADS 引用新特征ads_sales_company_list

禁止行为:

  • 直接修改原 DWT 表
  • 让 DWS 依赖 DWT_enhanced(造成循环)
  • 未评估影响就上线变更

📎 变更必须填写《模型变更影响评估表.xlsx》,走灰度上线流程

七、ADS 出口控制(红线!)

  • 所有业务查询、报表、导出、API 必须通过 ADS 层
  • 禁止任何应用直连 DWD/DWS/DWT/ODS
  • ADS 表必须:
    • 拍平 Array:ARRAY_TO_STRING(source_codes, ',')
    • 格式化字段:is_valid=1 → '有效'
    • 宽表设计:JOIN 多层数据,一次查询满足需求

八、配套工具与交付物

阶段必须产出
建模前《业务域划分清单》《ODS字段清单.xlsx》
DWD 建模《DWD字段筛选四象限模板.xlsx》《清洗规则表.xlsx》《Doris建表语句.sql》
上线前《元数据文档》《测试用例》《依赖关系图》
变更时《模型变更影响评估表.xlsx》《灰度上线计划》

九、口诀(新人必背)

DWD建模要扁平,Array存ID别存名;
DWS聚合要轻量,DWT画像要稳定;
基础画像保稳定,群体特征另建表;
依赖链路要单向,演进不乱靠分层;
ADS出口唯一门,新人照做不出错!

📌 本规范为团队强制标准,所有数仓模型开发必须遵守。
违反规范将导致模型无法上线、数据口径混乱、维护成本飙升。