晃眼工作快三年了,从一个ETL的小白到现在的数据仓库主管,慢慢对数据也有了认知上的提升,记录一些个人理解
一、数据仓库的基础
1.Sql
作为数仓人员,sql乃是家常便饭,不言而喻sql对数仓的重要性就跟吃饭对人的重要性一样,而sql个人认为最重要的是需要明白执行顺序,也就是一个简单的执行计划,清楚认知自己写的每一个语句后数据表结构是怎么变化,数据是怎么变化的,只要每次写语句脑子里都会潜意识的形成一张虚拟表,那所谓的sql优化、窗口函数、聚合函数、谓词下推、group by语句等等都是非常简单的事情,哪怕往后再出新的函数功能,无非就是技术上的迭代更新,而执行逻辑顺序是最核心的东西,深度理解这块是非常有用的。
2.数据建模
搭建出一个好数仓的基础是懂业务,数仓是最需要跟业务打交道的,从《大数据之路:阿里巴巴大数据实践》这本书理解到,搭建数仓、数据建模应该是一个自下而上的过程,而业务需求是一个自上而下的过程。自下而上就是说,需要调研知道我们现在的业务线总共有多少,有什么样的业务场景,能获取到什么样的数据等,然后基于这些前期调研的结果,把所有可用的数据作为数仓的数据源,这样就有了数仓的数据基础,有了数据基础自然就能大致知道数仓能提供什么样的服务,能给谁去用这些数据,或后期自行挖掘出数据的价值。需求就是自上而下的,比如一个部门过来告诉数仓人员需要做一个什么项目,要什么样的数据,这时候肯定不可能是等提出了需求,数仓的人才去调研,然后再去抽数据建模等等,这样的数仓效率非常低。要做到的是别人有需求而我们一看就知道该从数仓第几层可以提供数据给他们用。就像我们是一个超市,我们先知道能从什么样的供应商拿到什么东西(数据源),然后我们整齐归类摆放卖给别人(数仓搭建),来了一个男人需要啤酒我们就让他去饮食区,来了一个小孩我们让他去玩具区(数据服务)。这是做好数仓的前提,所以业务梳理完成后建模就是把业务过程落地成表,至于分多少层,要什么ETL工具,怎么去监控以及公共逻辑下沉都是在技术上才需要讨论的,而数据建模前期更关注的点应该是业务过程。
3.大数据组件
前面两点是非常重要的,而后其他的技术点都是作为辅助提升,让我们数仓产出效率更快,便捷开发,便于管理。目前hdfs、hive、yarn、spark、flink、kafka这几个是我觉得比较实用的组件,离线数仓后面两个组件可以作为了解,作为数仓人员这些组件需要关注的是怎么去用以及底层原理,不是必须要去关注底层实现源码、搭建等。现在的技术迭代非常快,出一个就学一个怎么用就好了,这些只是数仓的辅助提升,若是你前面两点都没做好,再好的技术产出的东西也毫无商业价值,真正决策管理层的领导不会关心你用的技术多厉害,只会看你做出来的东西有没有商业价值,数仓需要多换位思考:如果我是决策人,我希望看到什么东西?毕竟业务才是他们真正关心的东西,业务才是一个企业的营收核心,公司要是都不赚钱了要再好的技术有什么用,有的人会的技术越牛逼就越能拿到高薪,这其实有一个前提那就是公司的业务发展很好有很好的营收。
下次有空再记录吧...大佬勿喷