本周分享ETL数据清洗过程的一些知识,ETL(Extract-Transform-Load)主要指的是数据的抽取、清洗、一致性转换、交付的过程,这里的清洗和转换一般认为是一步。下面我们从这方面来了解下etl。数据的抽取:ETL的强大之处就是能够支持多种数据连接,无论是关系型数据库还是文本型数据库,或者是EXCEL、XML等格式都支持。ETL连接到数据源(前面说的多种数据库)之后,按照数据源查询的格式将数据拉取出来。在拉取数据源的时候要注意几点。第一点是ETL的连接要是只读的(单指数据拉取这一步骤),避免出现错误造成生产系统数据紊乱。第二点就是尽量避免拉取所有数据,将需要的数据做好标示,在拉取的时候只拉取需要的字段即可,避免给业务系统造成负担。第三点就是在数据拉取的之后尽量在存储的时候按照原始字段数据存储,避免拉取的数据失真。数据的清洗及转换数据拉取之后,存储到ODS层或者你需要的地方,接下来就是ETL的主要工作清洗及转换了。在这一步骤中涉及到将原始数据按照规则、格式进行转换,对噪声数据的剔除。在清洗的步骤主要有三个方面,第一是将不完整的数据进行剔除,例如会员信息中住址字段缺失,那么营销部门在拉取数据进行区域营销方案的制作的时候这就是不完整的数据,即使拉取出来也是没有意义的。第二种是错误数据,错误数据一般是由于系统的不健全造成的,如全角半角未进行区分,手机号字段未验证是否11位,身份证号码未包含字符造成只能输入数字但是X无法数据等。这类数据在清洗的过程中必须进行剔除,否则对营销计划制定会产生重要的影响。第三种是重复的数据,这类数据一般是根据业务需求进行判断,如果需要全量数据那么这类数据可以不进行剔除,如果只是提取特征数据,这类数据就要剔除。经过清洗的数据进入到数据转换的步骤,数据转换的时候要注意几点,第一点就是转换的过程中尽量不随意改变数据的格式,即使必须改变格式也尽量新建一列字段进行存储,因为在业务端分析的时候会对格式有很严格的要求。第二点是在这一步骤一定、必须要有一个主数据角色的系统(未建立主数据平台的情况),否则在转换的过程中会出现大规模的混乱。在数据清洗的时候主要是以下几个方面第一是数据的一致性,例如一个供应商在ERP中是00022,但是在财务系统中编号是9922,这样的数据在转换的时候一定要进行一致性转化,一定是以一种系统为主,例如在企业未建立主数据平台的时候,那么决定ERP承担供应商主数据的角色,那么在转换的过程中所有的供应商系统都要以ERP中的供应商编码来统一。第二是数据颗粒度的汇聚,因为业务系统中存储的都是明细数据,但是在分析的过程中可能不会分析得那么细致(消费品和餐饮类不在这范畴),所以需要在这一步按照业务需求进行业务主体汇聚,例如将访客信息按照地区进行汇聚。第三是按照指标转换,每个公司的指标体系不一样,所以在转换的过程中也要根据不同的指标进行计算。第四点是在转换的过程中要把格式进行统一,例如日期格式统一是yyyy-mm-dd,那么就要把yyyy/mm/dd等格式的日期按照标准进行统一,这样业务部门在使用的过程中就不会出现数据失真的情况。第五点是要将缺失数据按照标准进行补全,例如有些系统在存储数据的时候0用NULL来标示,有的用-或者/来表示,这时候要按照业务需求将所有格式进行补全。第六点是将数据业务化,例如有的系统在存储的过程中会将男女用数字来标示,在转换的过程中就要把他们变成字符用男、女标示,以符合业务人员使用。数据提供这一步就是将我们转换好的数据按照业务部门的业务主体进行存储,然后接入BI或其他分析工具供业务部门进行使用。以上就是ETL过程的一些解读,下面分享些ETL过程建立过程中的一些小建议。1、ETL过程及流程中所有函数名称统一,且各项指标一定要分解到最细,这样在整个过程中能够保证数据的真实性。2、ETL过程一定要拆解到最小环节,不怕步骤多,一定不要将步骤合并,因为在后期如果更改规则的时候,最小环节调整起来是非常方便的。3、ETL过程一定要想到修改历史数据的问题,有很多历史数据如果使用正常的ETL过程会造成数据丢失,这点一定要注意。4、ETL过程在定时的问题上要考虑其他系统可能也是00:00:00进行,尽量避免这个时间段,可以选择凌晨3点或者4点。以上是本周的一些知识分享。在下周分享一些有关小程序的知识。