1. 业务背景
超市等零售行业对卖场效率等要求越来越高,因此提升客户体验,同时如何快速扩充门店、智能化经营也是当前的主要目标。
零售企业的数据量普遍较大,高速增长的数据量和高时效性要求,需要强大的业务系统和工具支撑业务运作,来提升业务人员统计分析、查询等的工作效率。
受限于工具,x零售企业整体数据应用效率和应用水平不高,为业务服务不够,数据价值得不到充分的发挥。
数据层面:
1)数据孤岛,公司NEC平台等多个业务系统,数据未全部打通,无法关联进行全量报表展示
2)数据质量低,业务人员前端填报未做校验,表中存在作废数据,不合法数据,空值等,无法进行准确的数据统计
3)开源ETL工具无法满足高安全性,运维成本低,数据实时同步的需求,存在以下问题:
安全性问题:在需要手动执行抽数时,会需要进入服务器去更改执行文件,在未知的网络环境下,会给服务器带来风险;
运维成本高:缺少运维管理,无法快速定位出日志,带来极高的运维成本
高实时性要求:对于抽取频率较高的数据表,或需要实时同步的数据,开源ETL无法实现,对于后期业务需求,无法支撑数据时效性
应用层面:
数据不可用:NEC系统性能不好,通过基础数据通过SQL查询生成的报表,经常因为查询量大导致平台崩溃,降低了业务人员对报表的使用频率
移动端无法查看:NEC平台无法与企微集成,需下载软件但对收集性能有较高要求,外出人员不能做到及时点击及时查询;
2. 解决思路
1)首先使用 FineDataLink 搭建数仓:
和NEC系统对接,取出 API 接口中的明细数据,同时将 mysql业务库数据同步至数据仓库ODS层;
使用 FineDataLink 对数据进行数据合规性、匹配度、错误值、脏数据等的清洗,以及和其他业务系统的打通之后,基于业务逻辑完整加工处理,得到衍生可应用的指标,装载入企业数据仓库,生成 DW和 DM 层。
2)其次,使用 FineReport 进行报表处理、展现、数据分析,在其报表门户上展现数据处理结果,报表查询慢、解决移动端无法查看等问题。
3. 方案内容
3.1 对接NEC系统,接口取数搭建ODS层
背景:
零售行业或是其他连锁销售行业业务与分析都会同时进行,在做数据分析时,避免影响到业务层,通常会采用接口的形式提供数据。
解决方案:
FineDataLink 对接NEC接口数据,将各个门店的销售、库存、商品数据处理为二维表。
对于数据量不大的接口数据,使用全量取数方式,每天清表重写保证数据时效:
对于大数据量接口数据,使用增量更新控制接口每次取数量。
通过参数设置赋值需要抽取数据的期间,实行每天划分24个小时,再细化到每小时的0-,1-,2-,3-,4-,5-分钟,使每次抽取数据在十分钟的范围内,缓解接口压力,定时抽取数据,保证数据时效性:
3.2 大数据增量定时同步,搭建DW层
针对 DW 层的大数据量数据,为保证数据的时效性,同时避免每次全量更新数据造成的大数据量读写对数据库造成的压力,缩短更新时间,采用增量更新的方式,每天定时增量更新前一天的数据。
3.3 处理复杂计算生成DM层,提升报表前端加载速度
在 DM 层对取出的销售、库存、商品数据进行聚合、清洗、关联的计算,将 FineReport 复杂的报表计算改到 FineDataLink 中实现,减轻报表数据量大、SQL过于复杂导致的报表查询慢或者结果无法预览的问题。
3.4 数据校验,进行落库数据与源业务系统接口数据进行比对
背景:
对于已经完成的数据仓库,由于零售行业对销售、库存等数据准确性要求很高,业务不准确会对业务活动产生很大影响,因此将已经收抽取到数据库的数据与源业务系统接口数据进行比对,当数据异常时,希望进行提醒。
解决方案:
将数据仓库 ODS 层数据表名生成列表,然后分别取出ODS层全量更新的表名和接口数据全量更新的数据表名称,并将其设置为参数,通过循环容器,使用 SQL 语句计算接口数据源和ODS层数据库中的数据每个表中的数据总量,并写入指定的check数据表,增量更新数据表同理:
通过 FineDataLink 对比接口中的数据和取出到数据库的 ODS 层数据量,并将数据取出落库,如下图所示:
3.5 制作报表看板,便于业务查询和使用
使用FineDataLink处理好的数据制作库存、销售、商品报表看板,减轻大数据量 SQL 查询负担,如下图所示:
4. 方案效果
数据时效性得到保证:FineDataLink平台定时调度每日数据,在可视化页面中进行调度操作,任务清晰明了,操作简便快捷,不需要像传统调度工具写脚本执行;
业务分析效率较高:将复杂的数据处理步骤转移到 FineDataLink 中进行,减轻前端报表 SQL 查询压力,提升前端报表展示速度。
平台兼容性较高。不局限于PC端使用,可以在移动设备中访问网页,也能做到及时调整任务配置,。
平台具有协同性。可以同时多个用户登录创建不同的定时任务,且不同用户创建的任务,在权限范围内,可以任意调用。
流程校验数据量完整性。在抽取任务结束后,进行数据量校验,此时可以通过创建任务流程,将校验的工作交给平台进行,最终返回校验结果给运维人员,极大的缩减了运维人员的工作量。