数据仓库研发规范(附录)
来源于公众号: 数据仓库与Python大数据
数据仓库研发规范整体流程
下图为根据阶段规划与角色职责的内容,整理出的数据仓库研发规范的整体流程。
附录
数据仓库需求模板
数据探查报告
ETL文档
调度设计文档
单元测试报告
发布操作文档
代码评审报告
测试分析方案报告
交付测试报告
质量评估报告模板
验收报告模板
一、数据仓库需求模板
本章节将为您介绍数据仓库需求模板、常规需求申请单和迭代需求申请单。
填写说明:
*为必填项目,其它可以选择性进行填写。
指标逻辑可以引用指标和术语(或指标库)中的定义。
如果数据范围、更新频率、时间窗口、数据提供形式和表头信息不一致,可以针对指标项单独说明。
如果涉及到数据提供或数据交互,数据验收人、待验收数据样本和数据验收方式为必填项,其它项并非强制需求。
数据仓库业务需求模板
数据仓库业务需求模板 | |||
---|---|---|---|
需求申请 | 需求申请人* | ||
需求使用方* | |||
期望完成日期* | |||
需求类型* | |||
需求目的 | 需求背景* | ||
期望目标* | |||
应用系统名 | |||
应用系统联系人 | |||
需求内容 | 需求概览 | 需求范围* | 描述此次需求涉及的范围(可以从人群特征,业务场景等维度定义数据范围、改造哪些表等)。 |
包含的指标 | 多个指标以逗号分隔。如果指标较多,可以在日常业务需求附表中的指标名称一栏填写。 | ||
数据交互方式 | 涉及到数据输出的,需要描述数据的交互方式、格式等。 | ||
附件说明 | 如果有附件需要补充的,请在此说明,并同步附加附件。 | ||
项目涉众 | 数据产品经理 | ||
设计人员 | |||
开发人员 | |||
测试人员 | |||
数据安全与合规人员 | |||
需求版本变更历史 | |||
版本号 | 版本确认日期 | 版本变更点 | 提交人 |
常规需求申请单
指标需求中通常会涉及到下表中的约定项,如果需要自定义约定项,可以在自定义格式列进行填写。
约定项 | 默认格式 | 自定义格式 |
---|---|---|
日期 | yyyymmdd | |
比率值 | 4位小数点 | |
时间戳 | yyyy-mm-dd hh24:mi:ss,格林尼治时间。 | |
金额 | 单位为分。 | |
时间粒度 | 日:T-1日的00:00~24:00。 | |
周:周一到周日,对应指标仅周日有值。 | ||
月:自然月,对应指标仅月末最后一天有值。 | ||
年累计:自然年,1月1日到T-1。 | ||
财年累计:财年4月1日到T-1。 |
约定项 | 填写内容 | 约定项 | 填写内容 |
---|---|---|---|
时间窗口(历史数据要求)* | 存储周期* | ||
更新频率(日、周、月、小时、分钟、其它)* | 期望数据更新时间* | ||
数据验收人 | 待验收数据样本 | ||
数据验收方式 | 数据提供形式 |
| |
备注 |
| 粒度 | 目录 | 接口表 | 指标名称* | 指标逻辑* | 空值/异常值处理* | 监控项 | 值是否唯一* | 数据来源* | 安全等级* | 备注 |
1
迭代需求申请单
数据仓库需求变更申请单 | |||
---|---|---|---|
需求变更申请 | 原始需求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%。
每日发现故障趋势图。
线下缺陷严重程度分类。
需求实现说明
需求覆盖率(在测分文档中,需求与功能对应列表为准):0%~100%。
需求变更情况:包括已走正式流程的需求变更,邮件通告的需求变更,以及当前功能改动了原有需求的说明。
阶段 说明 分类 测分阶段 增加老会员模式下添加银行卡的出错情况提示。 需求变更 老会员添加卡的流程中,增加生僻字用户的判断。 需求变更 增加推荐规则模板:推荐规则为空时的展示方式。 需求变更 未实现需求:请说明需求未实现的原因。
遗留问题列表
序号 | 问题描述 | 风险影响分析 | 风险等级 | 建议跟进负责人 |
---|---|---|---|---|
Delay_1 | 由于XX API回参格式限制,XX字段返回结果无法适配计算引擎字段类型。 | 接口改造需花费X天,导致项目整体进度Delay X天。 | 高 | XXX |
质量评估结果
测试是否通过
保留建议
遗留的问题在本项目中可以接受,但Delay_1缺陷必须在XXX年X月X日之前启动升级包修复。
免责声明:
本公众号所有分享的软件和资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,且仅代表作者个人观点,与数据工匠俱乐部无关,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除
免责声明:
本公众号所有分享的软件和资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,且仅代表作者个人观点,与数据工匠俱乐部无关,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除
(欢迎大家加入数据工匠知识星球获取更多资讯。)
扫描二维码关注我们
我们的使命:发展数据治理行业、普及数据治理知识、改变企业数据管理现状、提高企业数据质量、推动企业走进大数据时代。
我们的愿景:打造数据治理专家、数据治理平台、数据治理生态圈。
我们的价值观:凝聚行业力量、打造数据治理全链条平台、改变数据治理生态圈。
了解更多精彩内容
长按,识别二维码,关注我们吧!
数据工匠俱乐部
微信号:zgsjgjjlb
专注数据治理,推动大数据发展。