数据开发的习惯
一个月里滚打摸爬的一些小经验。
我是真的感觉走了太多弯路了。希望小白入职要好好看。
数据开发与规范
1、导数据之前,要确定好字段格式与数据类型,按照数仓要求文档去开发。
2、不同数据库导数据,无论数据多大都要先在源数据聚合统计,再在导完之后的数据进行统计,以及字段的大致校验。(不能不校验,不然很多脏数据会不好开发)。
3、做好整理文档的习惯,数仓开发文档以及注释,写代码一定要写注释,不仅仅是方便自己,也是方便其他人。
4、边开发要边测试,不要等到验收的时候一堆bug,测试还要考虑null值的影响。
5、建数仓如果是不同主题的表需要关联,left join会影响计算值,
所以先查一个子查询去校验是否使用关联,如果关联影响数据就建临时表。
6、数据量一下子统计很多,就多建临时表。我之前接了一个需求,要统计每个月份和一年的统计,按照正常的sql一下子跑一个小时。
步骤一定是先计算天的,再计算月的,每个月份跑3分钟就注意了,如果不是上调度这种就建临时表,里面添加月分区,计算就快了!
7、数据出错的流向图,有指标没数据就自己去从ads层到dwd,ods一层一层地找。
8、每天列好自己的清单,努力完成好自己的工作。
9、理解需求很重要,在需求大会多提问,每次接到需求就要仔细去思考具体步骤,而不是边开发边问。
比如数据要怎么接进来?
数据需要做什么清洗?
配置前端需要哪些字段作为接口?
我要开发一个什么样的表才能覆盖前端所有的接口?
数据有什么口径需求?
10、建表查询需要加分区,不然数据量大跑很慢
11、子查询每个字段都要有别称
12、字段如果有空值一定要设置默认值,请养成这个习惯
13、养成记录bug的习惯,让自己变强大吧。
14、千万不要一个子查询写两三百行,不然真的数据不一定对得上,还不好排查bug。
我一开始的习惯(反面例子)
with t1 as ()
,t2 as ()
,t3 as ()
,t4 as ()
.
.
.
.
.,t100 as ()
select .....
现在的sql,基本是按照基础表数据去建多张临时表,最后left join 关联
千万不要觉得一下子写好几百行sql很酷很酷。其实是一种很low的行为。
15、调度与shell脚本:shell不要在调度上跑,在linux环境中运行,shell在调度上不会报错。
16、日常少加班,业余多学习,只有技术提升了工作才能完成。我技术很菜,再加上和大佬一起,搞得大佬的进度也被拖延了。其实上班也可以打开b站去查技术上的问题。(那个大佬已经不想我帮他做需求开发了,和他合作的那段时间我们两个都很煎熬。)
这是不是很反三观,我发现最近入职的同事,比我上手快就是大家都下班很早,然后立刻去学习,而我技术菜还加班,没有提升空间。我们在职人员不仅仅要维护自己的代码,还要参与维护前人的代码,这要求我们要掌握所有公司要求的技术,下班别贪玩,要认真学习。
有关bug篇
下面分享我日常遇到bug的情况
1、开发遇到的bug
数据校验质量不通过:关联问题、过滤问题、取错字段、开发口径
导数据失败问题:工具不熟悉、配置参数没改完、对配置内容不熟悉
需求理解不到位:一定要有自己的思路,多问
2、自研平台不会使用
这个只能请教同事。
3、排查bug要一点点地来,不要一次登天。
开发最值钱的经验
1、会设计表,对于接口全部覆盖
2、会排查问题,有排查bug的能力。(我真的想找个时间把自己的bug都记录下来。)