日常数据开发中,遇到过不少问题,最终沉淀为SQL规范。简单整理抛出来,欢迎指正和讨论。
语法和规范
排版
• 自行定义的内容全部小写,ODPS或其他约定关键字大写
• SQL需要有格式,单行长度不能超过80,不同含义语段需要缩进
命名与关键字
• SQL中不能出现Select *,只获取需要的字段,方便计算引擎做列裁剪
• SQL中Select的字段需要加 AS 别名,方便code review
• SQL中的表名,请书写 库名.表名 (在DataWorks里是 工作空间名.表名)
参数和常量
• SQL中不能直接写数字,如应用类型等枚举,可以在数据开发中配置参数、然后sql中引用参数即可
• 是否改成UDF
开发环境
• 脚本建议使用IDE开发(Idea插件)
• 注意开发后需提交任务才生效
其他(部分适用于关系数据库)
- SQL样式指南(SQL Style Guide):https://www.sqlstyle.guide/zh/
- SQL如果有多条语句,需要考虑语句是否可以并行跑(如果可以,需要拆分成多个脚本)
与多路输出减少计算量原则有冲突,需要谨