原创:陈思
BI系统质量挑战
BI(Business Intelligence)即商务智能,它是一套完整的解决方案,用来帮助企业更好地利用数据提高决策质量的技术集合,是从大量的数据中钻取信息与价值的过程。BI系统质量至关重要,可以说没有质量保障的BI数据还不如没有BI数据。而BI系统进行质量保障存在着巨大的挑战,主要有以下几点原因:
1.数据来源极其复杂,既有内部各个产品线的数据,又包含外部商业机构数据,主动采集数据等多种数据,数据源头质量保障挑战已经比较大;
2.数据经过多层计算,过程复杂,保证每一步都符合预期的成本较高;
3.数据口径要求严格,稍有偏差可能会导致实际业务意义偏差巨大。
建设目标
鉴于之前出现的BI系统质量问题,我们分析了BI质量保证仅有开发同学自己进行时存在的漏洞,在平衡核心质量和投入成本之后将以下三点作为核心建设目标,以进行系统化的建设:
1.形成质量闭环体系,高效高质量的可持续的迭代
2.实现P0级别报表全流程质量把控,达到报表输出0事故
3.形成数据质量平台,对数据全流程质量进行跟踪
接入前准备
为保证顺利接入进行了必要的准备工作,其中执行性的包括以下几点:
1.对数据来源、数据逻辑以及抽象出的各种业务指标的口径进行系统整理,并逐点与PM、RD同学进行同步确认,从而达到在知识层上理解是一直的目标。
2.核心技能SQL编写能力的系统提升,需要具备基于口径编写完备SQL的能力。
3.准备后续进行自动化建设所需的语言与测试框架——Python、Avocado等。
体系建设
在已经明确目标的情况下,根据需求的紧凑度,以及不妨碍正常发布的情况下,进行质量体系的逐步建设.整体测试架构如下,分为四层,分别是:
1.数据收集层
2.数据解析层
3.数据对比与Check
4.结果展示与警告
通过分层的方案建设实现了对BI系统深入测试,验证过程分为以下几个重要阶段:
1.发布前验证
在具备SQL编写以及编程数据清洗能力后,优先对报表口径学习,具备输出case形成对报表的测试能力.优先针对高优级别报表均具备质量覆盖,输出case评审后进行数据验证并维护SQL.数据验证正确后,报表才能进行发布。
2.数据diff
建立报表环比diff监控,准确找出报表发布时间点,历史数据的diff项, 完成监控报警建设。达到报表历史数据diff及时通知,并给出diff明细。
3.自动化验证
采用avocado测试框架,引入自动化case测试,保证发布数据的准确性,主要思路为:每个报表维护一组可用的验证SQL。通过sql的结果,与平台接口返回的数据做对比,验证报表数据的准确性。
在有了整体设计思路之后,就是实战的过程,基于采用的框架编写API层,Lib层以及case层面的输出,case调试并且运行成功后,就可以接入任务调度平台。
case调试成功:
接入调度平台运行:
执行通过邮件:
失败报警:
BI质量建设应用扩展
完成BI质量体系建设除了完成BI方向的目标外,作为具备线上各种维度和来源数据的BI系统可以支持多种质量建设,其中我们进行了一系列的在线质量全力数据的保障工作,具体过程如下:
1.将各个方向在线质量业务目标转化成数据指标
基于业务目标探讨数据需求,明确满足业务方向的数据输出方案和形式。例如“线上要保证注册成功的SLA>99%”,基于这个需要我们将BI数据中用户注册过程数据进行定时全量处理,将BI中过程数据抽取出来支持该指标的计算。
2.将业务指标转化为可以执行SQL
在能够满足需求的条件下,由各业务方向整理SQL语句且评审以保证数据输出满足要求。
3.在BI平台执行系统定时执行核心质量SQL以获得全量在线质量数据
基于python+Django,封装数据接口,将各方向关注数据进行采集采集后,使用Pandas将结果进行表格化,通过邮件的方式发送给对应负责人。
写在最后,感谢尊敬的大腿(张少华)与帅气的男神(徐浩)的指导,希望此文章可以给大家带来些许感悟。