谢老板的大学是一所末流二本,专业是网络工程,2016年初加入校企合作的大数据实验班,16年暑假开始进入企业实习。
实习的公司是一家外包公司,在保险公司驻场,职位是ETL工程师(实习)。整整两年,了解了数据的E(抽取)T(转换)L(加载)的整个过程。算是对ETL工程师有所了解。
前期是一个12人团队,中期20人团队,后期10人团队。主要工作简单来说就是汇集保险公司的各个业务线系统源数据,最终加工处理成公司级数仓,并搭建公司级业务报表供各部门使用。
环境:服务器:linux;数据库:Oracle;ETL工具:kettle;调度工具:shell;报表平台:BIEE;自定义报表开发:java
团队分三个小组:ETL组,报表组,Java组,我在ETL组,前半年驻场天津,12人租了一套三居室老破小,租了上下铺,自己组装,4+4+4居住。步行上下班,白天上班,晚上轮流做饭,吃完饭培训,那段日子还挺充实。
我们数据仓库分为四层:
1、数据运营层:Operation Data Store 数据准备区,也称为贴源层。
ODS是后面数据仓库层的准备区,为DWD层提供原始数据,减少对业务系统的影响。
为了考虑后续可能需要追溯数据问题,因此对于这一层没做过多的数据清洗工作,前期完完全全是一张表一张表原封不动的使用kettle抽取(后期鸟枪换炮使用了OGG)
2、数据仓库层
数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。
2.1 数据细节层DWD
数据细节层:data warehouse details,DWD
该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。
为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。
2.2 数据中间层DWM
数据中间层:Data Warehouse Middle,DWM;
该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。
简单来说,对通用的核心维度进行聚合操作,算出相应的统计指标。这一块主要是整个项目工时最长的也是最重要的内容,主要使用存储过程处理。
2.3 数据服务层DWS
数据服务层:Data Warehouse Service,DWS;
该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。这一块我们按照保险公司业务划分版块:投保,承保,保全,理赔等,处理主题宽表。
3、数据应用层ADS
数据应用层:Application Data Service,ADS;
该层主要是提供给报表组使用,方便直接出BI报表。当时本着报表组仅使用数据应用层的原则,数据应用层也存放了一些维度表,供报表组关联使用。
以上数据层级处理的,均有参与,通过这个的集中SQL语句处理,每隔一段时间看以前的代码总觉得以前的代码幼稚,这种情况一直持续到18年初。
刚开始去天津实习时有6个是一起来的同学,半年后去了北京,后来17年毕业后就开始陆续有同学离开北京,18年春节后只剩我一人了。
这个项目一期结束后,当年获得年度最佳团队称号(大概是利润最高),项目经理升了部门经理,ETL组长升了项目经理,我成了代理ETL组长。我的同学们大多是回到了离家乡比较近的城市,有回老家省会继续做数据的,有回老家考银行的,有回老家做老师的。当时的我还在北京,项目也比较稳定,干完一期来二期,二期干完继续搞三期。新需求越来越少,感觉没了当初那份充实又进步的感觉,技术达到了瓶颈,现有的项目技术就到这了难以突破,又不想一直耗着。
半年后,裸辞,从北京来到了上海。
网友评论