1、一个版本开发过程,可能琐碎的需求比较多,一定要记下来,否则后面可能会忘记或遗漏,不要太自信自己的记忆力
2、A left join B on 1=1 ,一般用来把B表的字段加到A表的每一行上,比如B表计算出当天是否是工作日,这是一个常量,和A表没有关系,所以就直接加到A表的每一行
3、数据报表开发是件很严谨的事,有的报表是全国各机构的人都在看的,一旦数据准确性出现问题,会引来很多人的质问,一定要重视
4、如果A和B是相同的表结构,只是名称不同,则两张表在关联取数的时候一定要写出具体的字段名并加表名,如果只是单纯的 select A.* ,B.* ,查出来的数据是混乱的
5、一般来说,sqoop任务是不可以并行跑的,因为在导数的时候会先把从hive查出来的数据放到一个路径下,如果多个任务则时跑则会把多份数据放到同一个路径,导致报错,可以在平台配置,每个任务的数据放到不同的路径
6、开发时不能只考虑日常版本,还要考虑到回刷历史数据的场景,比如计算年累计指标,除了限制日期年,还要限制日期<=当前日期,否则回刷历史时全有问题
7、开发过程中一定要多想一步,如果发现某一处有问题,那可能问题不止这一处,排查下其他地方有没有相同的问题,而不是等到其他地方的问题冒出来后再解决
8、别人给出来的逻辑,自己一定要过下脑子想下合不合理,不要偷懒,自己是开发,很多时候需求分析时没有考虑到具体的细节,但作为开发人员,在实操过程中一定要判断可行性,如果不考虑合理性,出问题了还是得自己改
9、在负责一个模块的时候,首先把模块所涉及的任务和脚本名列出来,梳理下数据处理流程,在改动一处逻辑时,根据任务名和数据处理流程思考下是否还要改动其他相关脚本,正所谓牵一发而动全身,很多时候只改一处逻辑或一个脚本是不行的,比如手工数的改动,添加了一个字段,修改了关联逻辑,则根据脚本名和数据处理流程来说,要改表结构、hql脚本、用到这张表的hql、初始化任务hql、下游表hql等,一定要顾全大局
10、给业务验数的时候必须保证给出的数据和生产上线后的数据是一致的,如果生产上线后的数据和给出的不一致,业务要骂街的
11、不要总是一次又一次的出错,尤其是给业务验数这种事,如果经常出错会导致领导、同事对你的不信任,明明自己累得要死,但是做出来的东西也不行