查看原文
其他

数据仓库研发规范(附录)

aliyun.com 数据仓库与Python大数据 2022-11-29

导读:本文承接之前两篇文章:聚焦数据仓库研发规范数仓任务开发规范流程,应读者粉丝朋友要求,本文将分享数据仓库研发规范附录模板及文档,建议收藏转发、pc端研习。


数据仓库研发规范整体流程

下图为根据阶段规划与角色职责的内容,整理出的数据仓库研发规范的整体流程。


附录

  • 数据仓库需求模板

  • 数据探查报告

  • 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,则该账户三级分类应为次级、可疑和损失。

代码评审测试用例记录


备注测试结果测试结果备注是否转化监控监控阈值创建日期创建人所属项目名称
检查主键的唯一性通过
<12019/3/16XXX订单主题分析



三、验收报告模板



测试验收点


序号测试验证点(按实际情况增减)是否通过
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_contractcontract_no

4指标特性检查值域范围检查jrcdm_cust_drawndn_fact_dsprin_max_ovd_days, inte_max_ovd_daysprin_max_ovd_days>=inte_max_ovd_days检验逾期天数的业务逻辑。
5指标特性检查值域范围检查x_jredw_da_drawndn_ovd_date_infoPrin_Ovd_Start_DtPrin_Ovd_Start_Dt<=Prin_Ovd_End_Dt, Inte_Ovd_Start_Dt <=Inte_Ovd_End_Dt检查业务逻辑正确性。

测试结果测试结果备注是否转化监控监控阈值创建日期创建人所属项目名称
通过


2013/7/16XXX某项目
通过


2013/7/16XXX某项目
通过


2013/7/16XXX某项目
通过
<12013/7/16XXX某项目
未通过开发代码中存在以下两个问题:
  • 未对期次还款日大于当前日期的记录进行过滤,这部分为未到期记录,需要排除。

  • 未对记录中创建时间小于期次还款日的、未结清的期次记录的逾期结束时间,赋予与逾期开始时间一致的处理。

<12013/7/16XXX某项目



六、发布操作文档




序号节点ID文件名发布次序是否需要生产冒烟是否需要重跑历史数据重跑历史时间段发布验证是否通过
1xxxxxdw_user_log_info_d.sql1YY20190326-20190426Y



七、数据探查报告


数据探查报告模板,如下表所示。


字段顺序字段名字段注释字段类型总行数空值个数



















空值比例唯一个数均值(number)::TOP1(string)最小值::TOP21%分位数::TOP35%分位数::TOP4



















25%分位数::TOP5中位数::BOT575%分位数::BOT495%分位数::BOT399%分位数::BOT2最大值::BOT1




















八、质量评估报告模板



测试情况说明

  • 测试用例执行通过率:0%~100%。

  • 每日发现故障趋势图。

  • 线下缺陷严重程度分类。

需求实现说明

  • 需求覆盖率(在测分文档中,需求与功能对应列表为准):0%~100%。

  • 需求变更情况:包括已走正式流程的需求变更,邮件通告的需求变更,以及当前功能改动了原有需求的说明。


    阶段说明分类
    测分阶段增加老会员模式下添加银行卡的出错情况提示。需求变更
    老会员添加卡的流程中,增加生僻字用户的判断。需求变更
    增加推荐规则模板:推荐规则为空时的展示方式。需求变更
  • 未实现需求:请说明需求未实现的原因。

遗留问题列表


序号问题描述风险影响分析风险等级建议跟进负责人
Delay_1由于XX API回参格式限制,XX字段返回结果无法适配计算引擎字段类型。接口改造需花费X天,导致项目整体进度Delay X天。XXX

质量评估结果

  • 测试是否通过

  • 保留建议

    遗留的问题在本项目中可以接受,但Delay_1缺陷必须在XXX年X月X日之前启动升级包修复。



专题系列


数仓之路      学习路线

面试系列      大佬访谈


点击上面文字即可跳转



关于我们


更多精彩,请戳"阅读原文"到"数仓之路"查看


关注不迷路~ 各种干货、资源定期分享


学习小密圈 ☞加群

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存