最近有一位数据新人小伙伴私聊我:在平时的工作中会面临着大量的数据需求,不仅多,而且杂,请问如何处理面对这些问题?有没有什么好的提高工作效率的方法?
其实不止是作为数据新人会面临这样的“困境”,很多数据工程师都有着这样的困惑,干了一两年感觉没意思,抱怨天天就是“提数”。一哥之前写过一篇文章《数仓工程师如何避免沦为“提数机”》,大家可以参考下。
面对这位小伙伴的困惑,我思考后给了她一些建议的,今天也系统的整理一下,给大家作为参考。
01业务的重要性
一哥做数据工作,呆过三家公司,做过新人也带过新人。经过“被工作的毒打”后,建议大家入职后较好的顺序是先理解业务,多跟业务打交道,对底层数据和业务之间的逻辑关系先大致心里有个谱。然后自己开始梳理业务体系,心里有个框架,一般纯业务的需求都比较平常,基本跳不出体系框架,一哥之前也写过另一篇文章来说业务的重要性《业务重要?还是技术重要?》。
熟悉业务后,开始对接需求。有时候不同业务有时可能会提重复的需求,对于这种需求,要么把代码和计算流程优化好,要么觉得不合理“怼”回去(当然不是硬怼哈,我们有业务满意度考核……),要么你就得开始研究下,看可不可以在平台上做成固化的数据产品。比较特别的,尤其是探索性的分析项目,是可以接受稍长一些时间的,中间可以和业务做探讨。
业务是可以分门别类的,最好可以自己梳理好,做好一些好的小工具。不过只接提数需求确实没啥意思,慢慢对业务熟悉了,就可以参与业务流程的制定,也可以自己给自己提的业务问题做数据分析(瞎折腾)才是真好玩。
02提数神器的重要性
有时候确实没办法拒绝业务部门需求,各种姿势各种要求,由于有绩效这座大山,提高自己的效率来应对层出不穷的需求可谓最好的方法,同时提数的过程也有助于加强业务理解(熟能生巧嘛)。
正所谓你有政策我有对策,好的方法和工具往往能高效完成工作以免不必要的加班,在这列举几个常用的提数加工神器:
Excel
熟练数据透视表,Vlookup等常见公式,不要瞧不起Excel,有时候它的效率确实挺高的。
针对业务部门需求固定格式的数据或者报表,可用Excel将模版写好备用,有新数据需求时直接复制套入,即刻完成。
Sql
数据人必备语言,针对业务定时需求的数据或者报表,可以用类似navicat的定时功能,提前将查询语句写好排版,软件会在指定时间将结果文档推送至邮箱。
Python
python的numpy,pandas,matplot是数据分析三个神器 。python可以直连数据库,连接Hive,连接Spark(好像没有它不能连的……)。也可以导入现有数据,只需提前将数据处理语句写好,需要的时候应用就行,一劳永逸。
shell
前几天有同学问shell除了执行部署的jar包,还能做什么?那么你一定不知道awk、sed有多强大。曾经用shell脚本写过上千行的数据处理脚本,离开公司4年了,听说还在用呢!
每天一个shell命令,赶紧学起来吧!
03工作方法论的重要性
首先,需求多,说明你们公司数据需求很多,给你施展才华的机会很多!
现在流行一个词——“套路”,工作同样也是有“套路”的,我们称之优雅的称之为为“方法论”。
需求优先级
1)繁杂的需求
需要抽丝剥茧,把复杂的类目整理成简单的条目,并且明确其中的主次重点,再逐条拆解。不过数据分析本身,有些需求,的确是很复杂,需要一些时间去思考整理的。这就要看你手上的工作情况了,包括判断个人在处理这些问题上的难易程度。
2)突然的需求
说明需求很紧急,这就需要对工作需求的轻重缓急,有个明确的判断。再结合完成需求的时间长短,有的需求的确比较着急,是需要优先处理,有的相对可以缓一缓,复杂度高的需求,又急的话,可以先给其中个别重要的,其他的给出完成计划。
沟通
自己对需求有了上述判断后,并不是立刻就开始执行了,一定要和业务沟通,否则可能会出力不讨好。
如果两个需求方都要的比较急,必要的时候让他们自己协调下,毕竟你一个人时间有限,而且数据需求,又要求精确细致,不能通过压缩分析时间来完成任务,要有自己的工作标准,保证给出的数据都是准确率的,可使用的。
三人行,……
如果是日常的工作,总结出方法论,快速处理即可;如果是难度较高、挑战较大的工作,也是值得花更多心思的,就理应花更多心思去研究;如果是难到自己不能完成,需要求助的,一定要和同事多讨论。古人有云:三人行,必有我师焉。虽然我们可能是诸葛亮,但古人亦有云:三个臭皮匠顶个诸葛亮。在讨论过程中或许你就会会发现一些其他方法。
个人认为,不论是数据工程师,或是产品经理、运营,亦或是其他岗位的工作,都是会遇到这样类似的情况,提高效率最有效的方法:总结方法论,找到最为快捷解决复杂问题的工作思路。学会对本质问题的分析,善于抓住重点,这样就不会被纷繁琐碎的事情干扰而浪费掉大量的时间。善于利用自己的时间去处理更为紧要更有价值的事情,用最少的时间,挣更多的钱。