文章
数仓建模工具包(增强版)
适用对象:数据开发、数仓工程师、数据产品经理
📎 1. 《DWD七步法 Checklist.xlsx》(增强版)
用途:指导新人从 ODS 到 DWD 表的完整建模流程
使用方式:每建一张 DWD 表,填写一份 Checklist
步骤 | 任务 | 是否完成 | 负责人 | 交付物 |
---|---|---|---|---|
1. 划分业务域 & 明确目标 | 与业务方对齐分析主题(如“高企资质评估”) | ☐ | 《业务域定义.md》 | |
定义 DWD 表用途(如“支撑资质评分、区域分布”) | ☐ | |||
2. 字段筛选 | 使用四象限法筛选字段(高频/高质量保留) | ☐ | 《字段筛选四象限模板.xlsx》 | |
新增:识别敏感字段(身份证、手机号等) | ☐ | 标注“脱敏”或“删除” | ||
业务方确认保留/删除清单 | ☐ | |||
3. 制定清洗 & 标准化规则 | 逐字段制定清洗规则(空值、异常、单位) | ☐ | 《清洗规则表.xlsx》 | |
建立码值映射表(province、industry 等) | ☐ | dim_province, dim_industry | ||
4. 设计维度退化 & 表结构 | 识别高频维度(如 province_name) | ☐ | ||
编写 Doris 建表语句 | ☐ | 《Doris建表语句模板.sql》 | ||
5. 编写 ETL & 测试用例 | 编写 ETL SQL(含 Array 处理) | ☐ | ||
新增:预估数据量 & 资源消耗(避免 GROUP BY 爆内存) | ☐ | |||
编写测试用例(空值、边界、异常) | ☐ | |||
6. 建立元数据 & 文档 | 填写字段血缘、口径、负责人 | ☐ | 元数据平台录入 | |
编写表级文档(用途、更新频率、下游) | ☐ | 《dwd_xxx_full 文档.md》 | ||
7. 上线 & 监控 | 表结构创建 | ☐ | ||
DolphinScheduler 任务配置 | ☐ | 任务名:load_dwd_xxx | ||
配置监控告警(数据量、空值率、时效性) | ☐ |
📎 2. 《字段筛选四象限模板.xlsx》(增强版)
新增列:是否敏感字段
、脱敏方式
字段名(ODS) | 业务含义 | 使用频率 | 数据质量 | 是否敏感 | 处理方式 | 保留字段(DWD) | 说明 |
---|---|---|---|---|---|---|---|
法人身份证号 | 法人身份证 | 高 | 高 | 是 | ❌ 删除或脱敏 | - | 隐私合规 |
phone | 联系电话 | 中 | 低 | 是 | ⚠ 清洗后脱敏 | contact_phone | 标准化为11位,hash |
company_name | 企业名称 | 高 | 高 | 否 | ✅ 保留 | company_name | 直接保留 |
Sheet2:脱敏策略说明
- 身份证:SHA256 或 删除
- 手机号:保留前3后4,中间*(如 138****1234)
- 邮箱:保留前缀,域名脱敏(如 user@***.com)
📎 3. 《Doris建表语句模板.sql》(增强版)
无变更,但建议在 COMMENT 中标注“是否含敏感字段”
-- 联系方式表(含 Array)
CREATE TABLE realtime_dwd.dwd_contact_channel_full(
channel_id BIGINT COMMENT '联系方式ID',
contact_id BIGINT COMMENT '联系人ID',
company_id BIGINT COMMENT '企业ID',
company_name STRING COMMENT '企业名称(退化)',
contact_name STRING COMMENT '联系人名称(退化)',
channel_type VARCHAR(20) COMMENT '方式类型:phone/email/wechat',
channel_value STRING COMMENT '具体值(已脱敏)', -- ← 新增说明
source_codes ARRAY<VARCHAR(10)> COMMENT '来源ID数组,如["1","3"]',
tag_codes ARRAY<VARCHAR(20)> COMMENT '标签ID数组,如["valid","not_company"]',
is_valid TINYINT COMMENT '是否有效(预计算)',
is_primary TINYINT COMMENT '是否主联系方式',
etl_time DATETIME COMMENT 'ETL时间'
) ENGINE=OLAP UNIQUE KEY(channel_id) DISTRIBUTED BY HASH(company_id) BUCKETS 10;
📎 4. 《ETL任务合并清单.md》(增强版)
合并原则:主外键强关联、更新频率一致、业务语义紧密(如联系人+联系方式)
新增任务类型:增强型 DWT
# ETL任务合并清单(高企咨询场景)
## 1. 企业相关
- **任务名**:`load_dwd_company`
- **处理表**:`dwd_company_base_full`
## 2. 联系人+联系方式
- **任务名**:`load_dwd_contact_and_channel`
- **处理表**:`dwd_contact_base_full`, `dwd_contact_channel_full`
## 3. 知识产权
- **任务名**:`load_dwd_ipr`
- **处理表**:`dwd_patent_full`, `dwd_copyright_full`
## 4. 聚合层
- **任务名**:`agg_dws_company_summary`
- **处理表**:`dws_company_summary`
- **说明**:基于 DWD 预计算字段,无 JOIN
## 5. 基础画像层
- **任务名**:`build_dwt_company_profile_v1`
- **处理表**:`dwt_company_profile`(基础版)
## 6. 增强画像层(演进支持)
- **任务名**:`build_dwt_company_profile_v2`
- **处理表**:`dwt_company_profile_enhanced`
- **依赖**:`dws_province_claim_summary`
- **说明**:**禁止**被 DWS 聚合任务依赖!
## 7. ADS层(按需)
- **任务名**:`ads_sales_company_list`
- **处理表**:`ads_sales_company_list`
- **说明**:JOIN DWD + DWS + DWT_v1/v2,拍平 Array
📎 5. 《ADS表开发规范.md》(增强版)
无重大变更,但强调可引用增强型 DWT
-- 示例:引用群体特征
SELECT
dwd.company_name,
dwt_v2.province_claim_rate, -- ← 来自增强画像
...
FROM dwd_company_base_full dwd
JOIN dwt_company_profile_enhanced dwt_v2 ON ...
🆕 📎 6. 《演进依赖关系图模板.md》(新增)
用途:可视化 DWD → DWS → DWT_enhanced 依赖链,避免循环
graph LR
A[dwd_company_base_full] --> B[dwt_company_profile_v1]
A --> C[dws_company_summary]
B --> D[dws_province_claim_summary]
D --> E[dwt_company_profile_v2<br/>(enhanced)]
A --> E
E --> F[ads_sales_company_list]
C --> F
B --> F
style E fill:#f9f,stroke:#333
style D fill:#ccf,stroke:#333
使用说明:
- 基础 DWT:蓝色
- DWS 聚合:浅蓝
- 增强 DWT:粉色(需特别标注)
- 禁止箭头从粉色指向浅蓝(即 DWT_enhanced → DWS)
🆕 📎 7. 《模型变更影响评估表.xlsx》(新增)
用途:当业务需求变更需修改模型时,评估影响范围
项目 | 内容 |
---|---|
变更类型 | ☐ 新增字段 ☐ 修改逻辑 ☐ 删除表 ☐ 创建增强表 |
变更表名 | dwt_company_profile_enhanced |
变更原因 | 业务需展示“所在省高潜密度” |
上游依赖 | dws_province_high_potential_summary |
下游影响 | ads_sales_company_list |
是否破坏现有依赖 | ☐ 是 ☑ 否 |
是否需灰度上线 | ☑ 是(先跑新表,验证后切 ADS) |
回滚方案 | 保留旧 ADS 任务 7 天 |
业务确认人 | 张三(销售负责人) |
数据负责人 | 李四(数仓工程师) |
✅ 总结:工具包价值
- 标准化:新人照模板填,不出错
- 安全合规:敏感字段自动识别与处理
- 可演进:支持从个体到群体的特征衍生
- 可治理:变更可控、依赖可视、回滚有路