正文
确实做仓库的人很辛苦,单单Oncall就会让人望而却步。有很多数据库工程师,晚上睡觉的时候经常被Oncall电话吵醒,因为数据流程出问题,需要第一时间去排查,是哪个数据源出问题,并且要立即解决,否则整个数据流程都会受到影响。
如果数据流程受到了影响,你就可能会被大领导一言不合叫到办公室说:我要的数据怎么还没有准备好,我的业务报表今天怎么没有发出来。
通过上面这个情景,我们可以知道:这是个很重要的岗位,因为数据流程很重要,决定了数据从源头杂乱无章的状况,通过ETL之后变成了整齐的数据,这些整齐一致性的数据可以让你很方便地把各业务的统计结果计算出来,并且能够统一口径。要不然就会变成有几个部门,就有几种统计结果,到时候A部门说业务增长了5%,B部门说业务涨了10%,OMG,到底信谁。
至少在以下几点上,我觉得数据仓库人员应该要做好:
-
a、数据字典的完整性,用的人都希望能够清晰的知道这个字段的逻辑是什么。字段要保持很好的一致性,不要同样一个字段在不同表里有不同的定义。
-
b、核心流程的稳定性,不要让每天订单主表能够使用的时间很不稳定,有的时候很早,有的时候要中午才出来,如果不稳定就会导致使用数据的人对你很没有信心。
-
c、仓库版本迭代不要过于频繁,要保持不同版本之间的兼容性。不要做好了仓库1.0,很快就把原来的推倒重来,变成了2.0。在数据仓库中需要考虑到延续性,主表的变动不要太频繁,否则使用的人会非常痛苦,好不容易才用习惯了1.0的表结构,没办法这么快进行切换。简单地说,要能向下兼容。
-
d、保持各业务逻辑的统一性,不要出现同样的业务逻辑,同一个组别的人统计出来的结果不同。原因在于共同的逻辑没有落地成通用的东西,所以导致每个人写法不同。这点其实需要特别注意。
针对以上,这个岗位的技能要求是:不要成为仅仅会写SQL的人,现在工具都很发达,如果你的技能很单一的话,那么可替代指数是非常高的,并且你自身也没有什么成就感。这里并不是说会写SQL的人很low,只是说应该多学一些技能,否则会很危险。
仓库人员应该要常常思考,如何进行架构设计是最合理的,你要考虑是否需要字段冗余、行存储还是列存储、字段如何扩展最有效,热数据和冷数据如何拆分等,所以需要有架构思维。
技能上,除了SQL熟练之外,还需要知道如何写Transform,MapReduce,因为有很多业务逻辑用SQL实现起来非常复杂,但是如果你会其他脚本语言,那么就能给你提供便利,让你的效率提升很多。
另外好的仓库人员需要写Java或者Scala,通过写UDTF或者UDAF来提升你的效率是很有必要的。
数据仓库人员也应该常常考虑自动化和工具化方面的事情,需要很好的工具或者模块的抽象能力,动手实现自动化的工具来提高整个组织效能
。针对经常碰到的数据倾斜问题,需要很快定位问题并进行优化。
说完了数据存储这块,接下来是数据应用的几个关键职位,在此之前,我想说数据应用的一个最关键的前提是:
数据质量、数据质量、数据质量!!
在每次阐述你的观点、分析结论或者用算法的时候,都需要先检查,源头数据正确性,否则任何结论都是伪命题。
3、数据可视化
这是个很炫的工作,最好是能懂点前端,比如js。数据可视化人员需要有很好的分析思维,不能为了炫技而忽视对业务的帮助程度。因为我对这个岗位客串的不多,所以没有特别深入的感悟,不过我觉得这个岗位需要有分析的能力,才能把可视化做好。
另外一方面来说,做数据应用的人都应该懂点数据可视化,要知道观点表达的素材顺序是:图片>表格>文字,一个能够用图片来阐述的机会千万别用文字来描述,因为这样更易于让别人理解。要知道,给大领导讲解事情的时候,需要把大领导设想成是个“数据白痴”,这样才能把一件事情说的比较生动。