开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段): 网站流量日志分析—数据入库—含义和 ETL 本质解释】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/695/detail/12200
网站流量日志分析—数据入库—含义和 ETL 本质解释
数据入库的一条本质就是从各个数据提取数据,对数据进行转换并最终加载提成到数据仓库维度表当中,那么就是清处理完的数据,并且设计表格之后对这些数据应设好才可以开展后续的分析。
当下给予数仓的大数据分析平台作为数仓的分层,通常在中间的数据仓库层(DW),数仓本身不生产数据,只是分析数据的平台,数据从不用的数据源而来,比如数据源1,数据源2,数据源3,数据源4等等,这些数据源能够产生数据的地方,在企业当中数据库,爬虫系统,服务器日志可以产生数据源,直接把数据放进去就可以了,但是理论是这么说,现实是否能做,开展一个数仓数据分析大概要哪些步骤,
首先第一点要干什么,数仓当中有一个非常重要的特性叫做面向主题,数仓分析的第一步往往是要分析确定已分析的主题,对于项目来说要分析网站流量日志,这个主题直接把后面收集数据或如何收集数据做了一个明显区分,相当于有了目标,有了主题之后,就要分析网站流量日志,就要分析订单销售情况,确定分析主题之后,基于主题寻找与之关联的数据,事实表的数据,要分析订单,把订单的数据找过来;要分析保险公司,把保险相关的数据找过来。确定好事实表主题之后,第三步是根据业务确定分析的维度,这些确定好之后,接下来就是采集收集数据,对数据进行预处理;然后把数据填充到数仓创建好的表中,映射成功,再开展后续分析,这是要想开展一个数仓分析大概需要确定的步骤,确定数据,找数据,找模型,把数据填充好开展分析,如果这个主题数据的数据源不是一个,比如分析的主题是保险,数据源是车险,数据栓是财险,数据式是人寿保险,都是保险,这时候产生问题一个主题的数据来自于不同的数据源,企业当中又没说一个主题只能对于一个数据源放在一个主题上,这些数据源都是跟主题相关的,是否能直接把许多数据源放在一个主题上开展分析。
举个简单例子,比如这里面它有一个单位,保险的金额元做单位,这里是以千为单位,这里是以万作为单位,它们的单位不统一,如果不加规整统一,直接把三个数据源直接放到主题下面,后面一旦涉及到保险金额的求和,求最大最小值,直接使用不统一单位,后面造成很多结果是错误的,因此可能产生多个不同的数据源,所以需要一个临时中转层,原数据层和数据源有什么关系。
原数据层的数据来自于各个不同的数据源,通常用于数据的临时储存,不对外直接分析。这时候通过相关工具把相关联的数据首先把它集中到 ODS 当中,在汲取过程当中进行相关的抽取,这个数据源12只需要123三个字段,以此类推,再经过相关的转换规整,最终把数据填充到主题当中,这时候发现数据从各个不同数据源经过中间这么多步骤抽取转化加载,最终填充到数仓主题当中,这些步骤称之为 ETL,本身是三个单词的缩写,(E 表示抽取,T 表示转换,L 表示加载)这三步生动形象的描述从各个不同数据源带数据仓库的故事。因此所谓的数据入库(数据仓库),专业称之为 ETL 。
把握住 ETL 本质,经过抽取转换加载把各个不同的数据源数据加载到数据仓库指定的主题下面,跟对应的事实表映射上,便于后续的数据分析,这就是一条的专业说法。
举例,这时候又确定一个新的主题,这个主题数据比较单一,它只需要一个数据源,只需要数据源1,这时候当主题数据比较单一,又比较干净整洁规整的时候,没有必要再经过 ODS 中转,直接把数据经过抽取或者不抽取直接放在数据当中也称为数据入库的过程。因此可以发现 ODS 在企业当中并不是百分之百需要的,要把握住本质,不管有没有原数据,最终目的把数据源填充到数据仓库当之中。
ETL 的方式,在企业当中有两种方式,一个叫做手动 ETL (使用 command shell Hadoop hivesql 把数据填充到 DW中),用于一些工具命令,另一个叫做软件 ETL (使用 sqoop kettle),其实最终还是用手来操作,这些软件它可以去对接这样的数据经过设置的抽取转换加载把数据填充到 hivesql 当中,不管是手动,写脚本写命令还是工具,最终的本质把握住,只要把数据按照确定的模型模式填充到数据当中,便于后续分析,就称为 ETL 。
ETL工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。