数据仓库研发规范整体流程
下图为根据阶段规划与角色职责的内容,整理出的数据仓库研发规范的整体流程。
数据仓库需求模板
数据探查报告
ETL文档
调度设计文档
单元测试报告
发布操作文档
代码评审报告
测试分析方案报告
交付测试报告
质量评估报告模板
验收报告模板
本章节将为您介绍数据仓库需求模板、常规需求申请单和迭代需求申请单。
填写说明:
数据仓库业务需求模板
数据仓库业务需求模板 |
---|
需求申请 | 需求申请人* |
|
需求使用方* |
|
期望完成日期* |
|
需求类型* |
|
需求目的 | 需求背景* |
|
期望目标* |
|
应用系统名 |
|
应用系统联系人 |
|
需求内容 | 需求概览 | 需求范围* | 描述此次需求涉及的范围(可以从人群特征,业务场景等维度定义数据范围、改造哪些表等)。 |
包含的指标 | 多个指标以逗号分隔。如果指标较多,可以在日常业务需求附表中的指标名称一栏填写。 |
数据交互方式 | 涉及到数据输出的,需要描述数据的交互方式、格式等。 |
附件说明 | 如果有附件需要补充的,请在此说明,并同步附加附件。 |
项目涉众 | 数据产品经理 |
设计人员 |
开发人员 |
测试人员 |
数据安全与合规人员 |
需求版本变更历史 |
版本号 | 版本确认日期 | 版本变更点 | 提交人 |
|
|
|
|
常规需求申请单
指标需求中通常会涉及到下表中的约定项,如果需要自定义约定项,可以在自定义格式列进行填写。
约定项 | 默认格式 | 自定义格式 |
---|
日期 | yyyymmdd |
|
比率值 | 4位小数点 |
|
时间戳 | yyyy-mm-dd hh24:mi:ss,格林尼治时间。 |
|
金额 | 单位为分。 |
|
时间粒度 | 日:T-1日的00:00~24:00。 |
|
周:周一到周日,对应指标仅周日有值。 |
|
月:自然月,对应指标仅月末最后一天有值。 |
|
年累计:自然年,1月1日到T-1。 |
|
财年累计:财年4月1日到T-1。 |
|
约定项 | 填写内容 | 约定项 | 填写内容 |
---|
时间窗口(历史数据要求)* |
| 存储周期* |
|
更新频率(日、周、月、小时、分钟、其它)* |
| 期望数据更新时间* |
|
数据验收人 |
| 待验收数据样本 |
|
数据验收方式 |
| 数据提供形式 | |
备注 |
|
NO. | 粒度 | 目录 | 接口表 | 指标名称* | 指标逻辑* | 空值/异常值处理* | 监控项 | 值是否唯一* | 数据来源* | 安全等级* | 备注 |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
迭代需求申请单
数据仓库需求变更申请单 |
---|
需求变更申请 | 原始需求ID* |
|
需求申请人* |
|
需求使用方* |
|
期望完成日期* |
|
需求变更原因 | 需求变更背景* |
|
是否可以在需求评审前预知* |
|
如何避免此类变更发生* |
|
需求变更内容 | 原始需求(对于新增的需求,填无)* | 变更内容* | 变更类型* |
|
|
|
代码评审要求
用例小类 | 测试要点 | 说明 | 是否已检查 |
---|
数据一致性测试 | 主键唯一性 | 产出表必须有物理主键或逻辑主键,且在数据上主键成立。 | 是 |
主键和外键逻辑关系 | 检查设计文档里关于主外键的设计是否在开发阶段得以实现,且在数据上成立,例如是否存在外键丢失。 | 是 |
系统/业务间格式和类型一致性检查 | 检查设计文档描述的字段定义是否与实际值一致。例如日期是否包含时分秒,金额字段是否为Double,单位为元/分,保留小数位数。 | 是 |
业务来源一致性检查 | 从同样业务来源的指标是否在数据上一致。例如同样是余额指标,数据来源是否一致或来自同一加工链路,如果不是,则结果是否一致。 | 是 |
同名逻辑定义检查 | 字段或逻辑定义相同,是否存在值不一样的情况。例如同样是贷款发放额,不同的表之间数据是否一致。 | 是 |
数据完整性 | 数据获取是否完整 | 代码中的数据获取逻辑是否完整。例如累计客户数,是否完整包含了历史上有效存在,但当前不存在的客户。 | 是 |
边界值检查 | 代码中对于边界值的处理是否正确。例如最近30天包含今天但不包含第前30天的。例如日期筛选是否为双闭区间。 | 是 |
过滤条件完整性 | 过滤条件是否完整。例如筛选当前有效会员需要加上会员状态的限制。 | 是 |
指标间逻辑检查 | 同表字段间逻辑检查 | 同表不同字段间在业务上存在的逻辑是否在数据上成立。例如贷款为结清状态,则结清日期一定非空;状态为逾期,则逾期金额一定大于0。 | 是 |
跨表/跨系统逻辑检查 | 跨表/跨系统间在业务上存在的逻辑是否在数据上成立。例如不良贷款余额>0,则该账户三级分类应为次级、可疑和损失。 | 是 |
代码评审测试用例记录
备注 | 测试结果 | 测试结果备注 | 是否转化监控 | 监控阈值 | 创建日期 | 创建人 | 所属项目名称 |
---|
检查主键的唯一性 | 通过 |
| 是 | <1 | 2019/3/16 | XXX | 订单主题分析 |
测试验收点
序号 | 测试验证点(按实际情况增减) | 是否通过 |
---|
1 | 数据主键是否重复。 |
|
2 | 结果数据的明细分布,包括数据量、空值、均值及其他相关业务指标的分布。 |
|
3 | 抽样检查:与需求设定时的抽样样本进行对比,查看是否存在差异。 |
|
4 | 如果是迭代需求,需要与一期的结果进行对比,查看数据量差异、明细差异等。 |
|
5 | 某些数值型结果机型同比、环比,获得大概增长率和变化范围,判断数据的正确性。 |
|
发现问题列表
序号 | 问题描述 | 风险影响分析 | 风险等级 | 建议跟进负责人 |
---|
Delay_1 | 由于XX API回参格式限制,XX字段返回结果无法适配计算引擎字段类型。 | 接口改造需花费X天,导致项目整体进度Delay X天。 | 高 | 张三 |
验收评估结果
业务方(数据产品经理):通过/不通过。
验收通过。遗留的问题在本项目中可以接受,但Delay_1缺陷必须在xxxx年x月x日之前启动升级包修复。
代码交付情况
关键指标包括BUG(每轮测试发现的缺陷总数)、执行率和通过率。
交付测试遗留问题
记录交付测试通过后,遗留在功能测试阶段未解决的问题。
单元测试要求
用例小类 | 测试要点 | 说明 | 是否已检查(Y/N) |
---|
规范性 | 命名规范检查(表、视图、工作流、字段) | 是否符合MaxCompute数仓建设规范管理指南中命名规范的表命名规范。 |
|
代码格式和注释规范性 | 是否符合MaxCompute数仓建设规范管理指南中的编码规范。 |
|
表引用规范性 | 数据不允许跨层引用。 |
|
表更新策略规范 | 建议临时表均为非分区表,正式表均为分区表。 |
|
是否支持重跑 | 代码必须支持重跑。 |
|
源数据质量 | 非空值检查 | 检查所用字段是否存在空值,以及代码对空值处理的策略是否正确。 |
|
字段枚举值检查 | 字段的枚举值是否都在代码考虑范围内,是否有可能会出现新值。 |
|
主键检查 | 物理主键或逻辑主键是否成立。 |
|
数据完整性检查 | 代码中引用的数据能否支撑实际需求。 |
|
字段间逻辑检查 | 字段间的业务逻辑关系是否在数据上成立,例如余额=总的发放-总的回收。 |
|
代码质量/BUG检查 | 历史拉链表检查断链/交叉链 | 使用标准SQL进行检验。 |
|
数据倾斜检查 | 是否存在倾斜的情况,是否有大表join小表未用mapjoin等。 |
|
表分区选择检查 | 代码对表分区的选择是否正确。 |
|
关联条件检查 | 关联条件是否正确,是否会产生意料外的结果,例如多对多关联、笛卡尔积。 |
|
字段类型检查 | 字段类型是否正确,例如:金额字段必须为X数据类型,编号字段必须为X数据类型。 |
|
执行效率检查 | 单条SQL执行时间不超过30分钟,单个脚本执行时间不超过60分钟。 |
|
数仓特殊需求 | 脏数据检查 | 检查是否有脏数据。 |
|
增量/全量数据抽取规范 | 抽取时间大于X分钟的,则考虑更改为增量抽取。 |
|
数仓抽取时间点检查 | 数仓抽取时业务系统是否ready,抽取的数据是否完整。 |
|
指标特性检查 | 细分指标趋势检查 | 例如会员拉链表记录数相比前一天必须是正增长、当日累计值-上日累计值必须大于0。 |
|
不同粒度数据转换正确性 | 例如细粒度向粗粒度汇总,通常使用最大/最高/最小/最低等过滤条件,如:支用层逾期天数转换到客户层指标(最高逾期天数)。最高逾期天数 = Max(支用层逾期天数)。 |
|
值域范围检查 | 检查字段值的范围是否正确,如:金额>=0,比率<=1,天数<=业务起始日期至今,还款日期>=放款日期。 |
|
代码值分布检查 | 从业务逻辑考量字段值的分布情况是否合理。 |
|
可累加值与不可累加值检查 | 检查可累加值和不可累加值的处理逻辑正确性,如:计算客户数总计时需要做去重处理,金额则可以累加。 |
|
单元测试用例记录
序号 | 用例大类 | 测试要点 | 表 | 字段 | 自定义表达式 | 备注 |
---|
1 | 规范性 | 命名规范检查(表、视图、工作流、字段) | jrcdm_agt_ovd_ins_detail_fact_dd |
|
|
|
2 | 规范性 | 是否支持重跑 | jrcdm_agt_ovd_ins_detail_fact_dd |
|
|
|
3 | 源数据质量 | 主键检查 | afclms_clms_loan_contract | contract_no |
|
|
4 | 指标特性检查 | 值域范围检查 | jrcdm_cust_drawndn_fact_ds | prin_max_ovd_days, inte_max_ovd_days | prin_max_ovd_days>=inte_max_ovd_days | 检验逾期天数的业务逻辑。 |
5 | 指标特性检查 | 值域范围检查 | x_jredw_da_drawndn_ovd_date_info | Prin_Ovd_Start_Dt | Prin_Ovd_Start_Dt<=Prin_Ovd_End_Dt, Inte_Ovd_Start_Dt <=Inte_Ovd_End_Dt | 检查业务逻辑正确性。 |
测试结果 | 测试结果备注 | 是否转化监控 | 监控阈值 | 创建日期 | 创建人 | 所属项目名称 |
---|
通过 |
|
|
| 2013/7/16 | XXX | 某项目 |
通过 |
|
|
| 2013/7/16 | XXX | 某项目 |
通过 |
|
|
| 2013/7/16 | XXX | 某项目 |
通过 |
| 是 | <1 | 2013/7/16 | XXX | 某项目 |
未通过 | 开发代码中存在以下两个问题: | 是 | <1 | 2013/7/16 | XXX | 某项目 |
序号 | 节点ID | 文件名 | 发布次序 | 是否需要生产冒烟 | 是否需要重跑历史数据 | 重跑历史时间段 | 发布验证是否通过 |
---|
1 | xxxxx | dw_user_log_info_d.sql | 1 | Y | Y | 20190326-20190426 | Y |
数据探查报告模板,如下表所示。
空值比例 | 唯一个数 | 均值(number)::TOP1(string) | 最小值::TOP2 | 1%分位数::TOP3 | 5%分位数::TOP4 |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25%分位数::TOP5 | 中位数::BOT5 | 75%分位数::BOT4 | 95%分位数::BOT3 | 99%分位数::BOT2 | 最大值::BOT1 |
---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
测试情况说明
测试用例执行通过率:0%~100%。
每日发现故障趋势图。
线下缺陷严重程度分类。
遗留问题列表
序号 | 问题描述 | 风险影响分析 | 风险等级 | 建议跟进负责人 |
---|
Delay_1 | 由于XX API回参格式限制,XX字段返回结果无法适配计算引擎字段类型。 | 接口改造需花费X天,导致项目整体进度Delay X天。 | 高 | XXX |
数仓之路 学习路线
面试系列 大佬访谈
点击上面文字即可跳转
关于我们
更多精彩,请戳"阅读原文"到"数仓之路"查看
!关注不迷路~ 各种干货、资源定期分享!
学习小密圈 ☞加群