上周分享了一些有数据之后如何通过维度建立相应指标,后续与一些朋友沟通后发现了一些比较严重的问题,就是现在很多企业虽然说有数据,但是这些数据要不然就是纯手工格式混乱,要不然就是脏数据比有用数据多得多,甚至一些企业一直没有将自己的基础数据层建立起来,有也只是存储在各个系统中,所以本周就基础数据层的建设进行一些分享。基础数据层其实就是我们以前分享过数据仓库分层里面的ODS层,或者比ODS层稍高一点。如果一个企业的基础数据层建设的比较好的话,那么这个企业在数据层面一定是已经达到了数据展示阶段,他的所有数据能够有效利用,各种指标体系也一定是比较完善的,甚至有一整套报表展示体系。而一个成熟的基础数据层应该是什么样子的呢?如下图:我心目中的健康的成熟的基础数据层的架构一、基础数据层的数据来源1.1业务软件系统在现今社会提起软件应该没有人会不知道,各行各业都有自己的行业软件,包括各种管理软件等,这些软件大部分是按照行业划分的,例如建筑行业的新中大、房地产行业的明源、餐饮行业的天财商龙等,而管理软件则不同,管理软件一般是针对企业管理过程或业务管理过程,例如协同办公里面的OA系统与BPM平台、知识管理里面的企业知识库、财务管理里面的金蝶与用友等。这些软件通过我们日常的操作,生成不同的数据,而这些数据就是我们的工作成果也是基础数据的大头,也是企业重要的资产。而一个成熟的企业基础数据层的数据占比,至少要达到80%才算是比较健康的。1.2自制、定制系统以及其他手工填报模块说起这个我一直记得一件事,当时跟行业中的一个朋友聊基础数据层的时候,我说一个企业软件环境在完善也一定有自制或定制系统,甚至有些手工填报都是必须的,如果一个公司的软件环境建设的极为简单,其实可以通过数据提报快速搭建一个个小型业务数据模块,先把数据累计起来,然后在梳理看看是购买成型软件还是找专业乙方定制(使用小型业务模块一段时间之后,业务部门其实也能够准确的把握他们的具体需求,因为很多的业务部门其实在一开始的时候对自己的需求并不是很清晰,这也是为什么很多时候项目进行一半的时候突然业务部门改需求的原因)。当时被他疯狂嘲讽,说你这样干累死,而且数据质量肯定差,并且是不可能的,我说只要前期有些系统能够承担起主数据的责任就不会出现数据混乱,而且模块制作的过程中只要根据业务模式规划好数据就不会出问题,当时讨论到最后也没有个对错。其实我的思路一直是这样的,通过小型模块快速实现需求,然后业务部门在使用的过程中快速迭代,把业务需求进行完善(类似于现在的业务调研通过axure快速实现页面,让业务部门根据页面进行反馈),挖出真正的需求。而且有很多的时候企业中的业务环节非常频繁,但是市面上却没有这种小小环节的软件,这时候定制、自制小型业务模块的优点就凸显出来了。手工填报系统并不是简单的一个页面,而可能是一个简单的环节。1.3业务系统+手工填报混合计算数据这部分数据其实不是很好理解,但是如果你理解为系统中的业务环节与现实中的不匹配了,造成有些数据没有了或者需要二次计算的这种业务的时候就比较好理解了,例如有很多的时候企业中的财务数据有两套,财务数据体系与财务运营体系,有时候可能只是是否含税而有时候涉及各种费用与收入分类不同等。当碰见这些情况的时候,需要将系统中的各项数据拉出来,进行计算后再进行使用。二、第一处理过程(数据的第一次处理)第一次处理过程主要有三类,一类是已有系统数据的简单清洗,将一些数据取出再将一些数据的格式进行统一,如yyyy-mm-dd hh:mm:ss格式改为yyyy-mm-dd,第二类是将自制或定制系统与流程体系绑定,完成审批过程。第三类是通过固定公式的方式处理已有数据与新数据的结合。三、规范数据过程这一过程是整个体系中最为重要的步骤,如果这个步骤没有按照标准建立或者建立的时候没有考虑过指标的灵活性的话,就会出现指标变动后直接影响数据结构,需要重新计算或梳理。3.1统一数据标准这个标准是指具体数据的标准,例如单位统一变为米,或者小数点后统一留几位,只有在统一了标准的情况下才不会出现比例好几万的情况。例如一家店铺提报的数据是万元,系统里面的是元,最后算占比的时候就会出新好几万的比例。3.2统一函数在这一步的时候要特别注意,因为很多的时候各种存储过程中都有写各种函数,但是要注意像日期、年月、指标名称等函数要规定好标准的名称,定要统一。3.3日期格式在日期格式上要注意两点,如果需要单独月份的时候一定要将月份单独提取出来,再一个就是在存储的时候一定要将日期格式按照统一格式,避免造成时间维度汇总的时候出现错误。3.4简单主数据这里说的是要把一些主数据在这一步嵌入,主数据大家可以理解为你去餐厅吃饭,餐厅的菜单就是主数据,你结账的时候的账单就是交易数据。像人员、材料、合同等主数据一定要确定一个唯一的系统,其他所有关联数据从这个系统中取数。3.5统一映射、关联在这一步一定要将相关数据的关系明晰,例如hr系统中的1是女性2是男性,或者婚姻状态1是单身,2是已婚等,关联的时候就是同样的数据。3.6指标指标体系根据业务进行梳理,详细的话可以参考上一篇,但是在此着重提醒大家,指标体系一定要做成灵活可实时分配的,千万不要做成死指标,否则一旦业务形态变化基本就等于宣判指标体系失效。四、第二处理过程在经过第一处理过程之后数据其实已经是属于比较规范的了,第二处理过程主要的工作重点是在数据汇算、换算、字段的取舍以及转换方面。在这个过程因为涉及到比较多的etl,所以这部分详细留在下一周ETL过程中进行具体详解。五、基础数据层其实在图中很我掺杂了一些dm(应用数据层)的一些概念,因为基础数据层的报表层面有很多时候其实也需要按主题或者维度进行汇总的,所以有很多数据层面其实在基础数据层的时候如果准备好了其实更方便。企业在整个数据体系建设的过程中,我的知识储备觉得应该分三层,第一层数据展现、第二层数据汇聚、第三层数据需求与探索。基础数据层其实是所有层面的基础,就像数据分析的基础是数据一样。打造基础数据层的时候在上面图中没有进行说明的是数据架构师,一个厉害的数据架构师在进行数据体系架构的时候可能会有些让人不懂,因为数据架构师和数据库架构师不一样,数据架构师是从企业战略及企业经营层面进行总体规划,而数据库架构师是从当前业务场景进行规划, 在层次上就不一样。好的架构师就像阿里的淘宝一样,能够在秒数据100的时候提前将秒10万的的数据提前预估到。一个企业的数据展现是否成熟的根基就是基础数据层是否成熟,成熟的数据层也能够为未来企业的的数据分析、智慧分析等提供更多的支撑。本周分享到这里,下周分享下ETL过程中的一些经验,虽然不是精通,但是在工作和规划中还是有一些经验的。