微信号:tuniutech

介绍:途牛技术中心官方平台

建设可用&能用&宜用的三用大数据

2015-05-28 17:56 陈友义

最近几年没有人不谈大数据,好像不懂点大数据就要被甩出去几条街了,大家都忘情地谈如何采集数据、谈存储数据、谈如何使用数据、谈数据安全、谈数据共享、谈让数据产生价值,不过要让采集进来的数据能成为可用、能用、宜用的“三用”数据,这是实现数据价值最大化最基础也是最重要的环节


“可用”是指我们可以在统一的数据平台,采用统一数据查询语言,让使用数据不再成为一种“望库兴叹”的奢侈;

“能用”是在可用的数据平台上,可以放心地使用企业运营数据,不用担心各种“解释不清楚”、“口径对不齐”、“格式不标准”困扰,让使用数据变成各种“胆战心惊”;

当我们需要能进行较灵活使用数据时,我们会发现昨天刚做的数据报表和数据表单已经没法满足要求,怎么办,重新开发数据!这使得我们的数据平台成为了一个相对静态的系统,使数据成为了“动”的数据,数据不宜用。


据统计和笔者了解,国内90%的企业建设的数据不是“三用”的数据,这也表明大部分企业在喊得大数据其实应用相当有限,远没有到可以谈论数据共享,挖掘大数据的价值的阶段。本文我们就谈谈如何让企业的数据成为“三用”的数据,让大数据发挥其威力,而不仅仅停留谈论技术和理论层面。


做到“三用”,笔者认为最主要是需要解决这几个问题:堵、漏、错、粗。


1) 数据隔离不畅通,各个数据孤岛,怎么样让数据联通、让数据流动起来,不是堵在各个系统的孤立数据,这是首先需要解决的问题。

每个企业都会有各种系统,比如ERP系统、订单系统、会员系统、客服系统等,这些系统一般都是物理隔离的,甚至有些系统数据样式都不一样,结构化数据、非结构化数据,数据结构和数据库语法都不一样,我们需要能让这些数据“联”起来,就是把各类数据通过采集工具进入到统一的数据平台,让他们在同一格式、同一平台做处理,这也是建立数据平台最基础的要求;

在“联”的基础上,数据能实时采集过来进行补充更新,及时把现在发生的数据增量补充到历史数据中,让数据能“动”起来,静态的数据是没有生命的数据,流动的数据才能做出最准确的决策,才能让我们的决策前置。



2) 缺数据、丢数据、数据平台数据遗漏,后果是数据平台底层模型设计考虑不全,没法快速应对数据应用和用户需求

当经常发生各种数据应用和业务需求数据没法在我们的数据平台中取到,而是需要从源系统重新进行收集的时候,这就是一个“漏”数严重的系统,因为一些行为的数据(比如客户浏览网站、APP的行为数据)在这样的系统里再也没法被收集到,而且那些可以重新收集的数据也由于历史数据问题、格式问题等各种情况导致使用数据的请求严重延误。


解决“漏”数的问题,需要我们对企业的运营业务流进行梳理。我在面试建模师的时候,通常会问一个问题:假定你来我们公司,但是你对我们的业务还不熟悉,我让你负责数据建模,你怎么做?95%以上的人会说根据用户的需求来分析建模,那其实就做成了需求驱动的系统,就埋下了“漏”数这个坑。我给他的建议是,你去一线业务部门轮岗两个月吧,每天做业务部门人员的工作,从早上九点开始到晚上下班,把所有工作的流程都记录下来,这些记录就是最重要的第一手建模材料;因为公司所有系统的数据都是有业务需要而产生,特别是一线的系统,我们通过对每个业务单元业务流程的实体化,让实体相互建立起对应关系,如此对每个业务单元都有这样的模型,我们称之为子领域模型,子领域模型之间又由于业务的发生关系,这使得各个子领域模型组建起整个公司的大领域模型,这是数据驱动建立底层模型的第一个阶段,但是也是最重要的一个阶段,因为已经建立起了企业底层的业务模型(这个阶段具体企业可以根据时间进度要求进行适当的调整,比如可以先进行核心业务流程的梳理,非核心业务流程可以后续逐步进行),第二步开始就是把业务流转化成数据流,把领域模型转化成数据模型(逻辑模型和物理模型,这个环节主要是技术工作,不展开)。


3) 第三个问题就是如何解决“错”数的问题,这是所有企业最苦恼的话题,数据不准,怎么办?


依靠数据开发环节是否可行?依靠数据测试环节是否可行?其实都需要,数据开发是数据产品的主要环节,数据开发环节需要在数据容错、数据自测上做好把关;数据测试也需要对数据进行严格的测试,但是这些足够了么?从目前的结果来看还不够,数据还是各种问题,大家还是不能放心使用数据。因为往往一个数据结果由各种复杂逻辑组成,通常一个数据处理通常包含了基础字段数据处理、多字段逻辑处理、多表数据逻辑处理、行与行之间计算、数据段与数据段之间计算等,这么复杂的数据处理依靠数据开发的大段逻辑代码是风险很大!我们使用的方法是数据风险前置和数据过程透明化,我们把整个数据处理过程分成几个阶段:数据探查(Data Profiling)、数据过程设计、数据过程分解、数据开发、数据测试、用户测试、上线试用等阶段;


数据探查(Data Profiling)是分析所需用到的各种源数据字段信息存在的问题,确定好单个字段逻辑,同时把源头数据问题反馈到源系统开发部门,推进源头去改进数据质量,比如推动源头系统对异常的日期格式、数值范围、数值枚举类型等都控制,根据笔者实施经验,这个阶段可以处理掉20%的数据问题;


数据过程设计、数据过程分解、数据开发这几个阶段就是让数据处理的黑盒过程变得透明,把数据清洗的大逻辑拆解成有多个顺序的小逻辑,每个小逻辑都能较容易进行做单元测试,举例:一家在线销售母婴产品的企业,销售的渠道主要由自营、第三方线上平台(比如JDtaobao等),在处理订单逻辑的时候,就需要把自营和第三方平台订单分开处理,然后合并到一起,因为自营订单和第三方平台订单数据来至不同的数据库,对应的计算规则和字段类型都不一样,拆解处理的好处是,可以降低数据出错几率,让复杂的处理过程拆解成多个简单的处理小过程。这个阶段可以解决60%数据问题;



在开发完成后,我们需要让业务部门的人员参与进来进行数据验证,因为业务在第一线,对与自己相关的数据会特别敏感,这个环节我们称之为“用户测试环节”,这个环节我们的经验是可以解决15%左右的问题;


到这个阶段我们已经可以解决掉95%的数据问题,剩余5%的数据问题属于相对比较近隐蔽的问题,这部分数据问题隐藏较深,数据开发实施人员并不能轻易发现,而且这些问题也不是每天都会发问题,所以这部分数据问题我们需要通过数据上线后,使用过程中进行监控跟踪检查来对数据进行修正。只有经历以上过程的数据最后才能称得上放心的数据。


4)


数据平台的数据是能足够支撑业务,但是在业务需求发生变动时,往往很多企业的数据平台需要对数据重新进行处理,因为之前建好的底层模型没法满足数据粒度的要求,这其实代价很大,相当于把底层数据重新处理过,这就是数据太“粗”,这样的数据平台其实使用起来很费劲。这个问题的核心还是模型不完善,底层数据模型首先要解决“漏”数的问题,这基本上保证所有业务相关的数据进入到统一平台,然后需要对全面的数据建立多层模型,第一层根据上面提高的领域模型落地成数据流的模型,这层模型是最明细的,最贴近业务的模型,这层模型我们称之为核心层模型;第二层模型是在明细模型之上的维度模型,在专题分析角度对数据进行重新组织,形成多维的模型,落地成度量、半度量、维度,这层模型所有维度的粒度也是最细粒度,这层我们称之为明细多维层模型;第三层模型会在第二层基础上进行适当汇总,汇总的程度取决于业务的需求,这层我们称之为汇总多维层模型;第二、三层模型会随着需求的变动而变动。


想让数据做到 “可用”、“能用”、“宜用”需要一套完整的方法论去支撑,同时也要让处理过程尽量透明化,让更多人能尽量多了解整个处理过程。

洋洋洒洒讲到这,说了好多废话,建设底层数据平台时间又脏又累的活,各位已进入和将进入到这个领域的同学,且行且珍惜吧。













 
途牛技术中心 更多文章 「牛人讲堂」第二期:有腕儿就是这么任性——邓侃博士与你分享大数据实战精华! 牛人大讲堂第二期总结 ActiveMQ相关介绍及实践 有一群牛人,我们必须知道 产品中心基础知识培训开始啦!
猜您喜欢 就因为刷了刷新闻,他被上市公司大佬请喝茶... 关于xgboost 电线是如何成为一种交互界面的? 这些.NET开源项目你知道吗? 【大宝】如果只知道Dribbble、behance、站酷你就OUT啦