从SQL任务稳定性、性能方面考虑如下情况
-
1.权限问题:在MaxCompute平台
A厂数据开发平台
SQL任务如果要引用外部project表需要先申请表字段权限,如果外部表新增字段,线上任务因为没有新字段权限导致任务运行失败。 -
2.字段数不同问题:如果写表采用"insert … select * from table_x"的方式,如果table_x新增字段也会因为字段数不匹配导致任务失败。同样在使用union all语句时也会有这个问题。
-
3.性能问题:select * 会读取所有字段增加开销。但是由于MaxCompute在生成执行计划的时候已经做优化了,未使用的字段不读到内存,这个写法实际不会导致性能变差。
Select * 写法可以减少代码行数,让代码更简洁,将字段罗列出来能够更清晰展示需要使用到的字段,并且避免许多问题。
如此粗暴的规范必然是经过许多血泪教训总结出来的。除非你非常明确这么写会产生什么影响,不然还是遵照规范来吧。
你知道其它相关案例吗?欢迎评论补充。
下次我们聊聊JOIN,你知道怎么通过JOIN实现笛卡尔积吗?
(觉得写得不错就点个赞吧, 头条号: 风控数据开发-唔崎 欢迎关注)
本文探讨了在MaxCompute平台上进行数据开发时遇到的SQL任务稳定性问题,包括权限管理和字段变化导致的任务失败。当引用外部project表或使用insert...select*时,需要注意字段权限和数量匹配。虽然select*在性能上可能不会显著影响,但它可能导致代码维护问题。为确保任务稳定性和性能,建议遵循规范,明确指定所需字段。此外,文章还预告了下期将讨论JOIN操作实现笛卡尔积的方法。
1122

被折叠的 条评论
为什么被折叠?



