通过做客户分析项目,发现要做好一个模型分析师,需要做的事情非常多,既要充分了解需求,又要对后台ETL过程有很好的把控。下面是对做模型的一点总结:
业务需求:
做模型时,觉得对ecif比较了解,以为做模型没问题,但是发现,业务根本不是自己想像的那样清晰,业务人员本身也不懂自己到底要什么,但是他们就是想让你给他们开发出一套分析系统,这时候你既要站在一个业务人员的角度来了解需求,又要从技术的角度考虑怎样将需求转变为模型。
随着业务的加深,发现很多时候评判系统的好坏不是你的sql写的多好,而是你对业务了解的程度决定了你的结果的好坏。
后期ETL把控:
做模型,不仅要了解业务,还要对于后期的ETL开发过程做好把控,要知道每个需求怎样来实现,通过做出这些表,符合不符合需求,后期的开发的可用性,模型的可用性和扩展性等等都要考虑清楚。
还有,DW的模型不是一蹴而就的,需要一次次的迭代,最终得到比较满意的结果。
1).模型规范
一般来说,DW会分很多层,比如SGA层、ODS层、MID层等等,要明确知道每层需要放置的数据,不要互相混淆。
注意模型中表和字段命名的规范,层级的清晰判断,
2).加载方式:
因为我们主要用的时间戳方式加载数据,所以建立模型时,要注意全量和增量的把控
对于做全量和增量,要看运行的效率,表中数据量的大小,还要看表中数据是否可获取增量。
做全量情况:
1.码表,本身数据量就相当小,可以考虑做全量;
2.还有一些表全量增量运行速度都很快,这时可以考虑做全量,因为全量一般数据的正确性比较高;
3.无法获取增量
做增量情况:
1.运行效率比较慢
2.数据量比较大
3.可以获取增量
3).保留历史:
我们有的时候有必要获取一些重要的历史信息,比如对于客户系统来说,客户的历史状态非常重要,这时就要考虑对客户的历史状态保留历史。
4).存储方式:
通过建立模型,还要考虑数据的存储方式。
如果一个表保留历史,并且数据量特别大的情况下,就要考虑分区和并发。
例如,项目中有个客户表,对于客户表的状态,需要不断的保留历史,每个月就会有大概两千万数据,这样一年下来就会有两亿数据,数据的急剧增加对于以后数据的存储和查询都会存在问题,这时就要考虑数据的分区和并发。
总结:
一直都把自己当成一个开发人员,做事情的时候,总是从代码的角度去考虑问题,一头扎进代码,就不在出来,实际上工作中真正让人成长的是协调好各个工作中的事情,而不只是开发代码,开发代码只占工作中的很小一部分。要做好一个模型分析师,怎样了解需求,怎样和客户交流,怎样把控进度,怎么确保模型的可用性和扩展性,怎么通过模型把控开发等等都是非常重要的,看来学习的东西还太多太多。