数据仓库:SQL编码规范
SQL编码规范
在数据仓库SQL语句的编写中,需要遵循一定的SQL编码规范。遵循这些编码规范可以使代码的可读性强,层次分明,结构清晰。
SQL编码基础规范
基础规范规定所有的SQL语句需要共同遵循的规范。
- 所有的关键字,函数名统一使用全大写
- 所有的表名,字段名军使用全小写
- 对应的括号要在同一列的位置上
- WHERE语句条件编写注释
- 运算符前后间隔1个空格
- 4个空格为1个缩进量,所有的缩进均为1个缩进量的整数倍
SQL注释
- 每条SQL语句均应添加注释说明。
- 每条SQL语句的注释单独成行,并放在语句的前面。
- 字段注释紧跟在字段后面。
- 对不易理解的分支条件表达式添加注释。
- 对重要的计算添加注释,说明其功能。
字段排列
- SELECT语句选择的字段按照每行1个字段的方式编排。
- 首个选择的字段与SELECT之间隔1个缩进量。
- 换行缩进2个缩进量后,添加逗号再输入其它字段名。
- 2个字段之间的逗号分隔符紧跟在第2个字段的前面。
- AS语句应与相应的字段在同一行,多个字段的AS建议尽量对齐在同一列上。
关键字排列
- 换行编写。
- 与相应的SELECT语句左对齐编排。
- 子句首个单词后添加2个缩进量,再编写后续的代码。
- WHERE子句下的逻辑判断符AND、OR等,与WHERE左对齐编排。
- 超过2个缩进量长度的子句加1个空格后,再编写后续代码。
CASE语句的编写
CASE语句可以用于SELECT语句中对字段值进行判断取值的操作。CASE语句编排的规则如下:
- WHEN子语在CASE语句的同一行,并缩进1个缩进量后开始编写。
- 每个WHEN子句尽量在1行内编写,如果语句较长可以换行。
- CASE语句必须包含ELSE子语,ELSE子句与WHEN子句对齐。
SQL语句示例
下面给出一些在实际的开发中使用到的SQL代码模板。
建表语句
在实际的数仓工作中创建表需要注意以下几点:
- 根据需要指定库名称
- 创建分区表时使用一致的分区键
- 为了兼容不同类型的源数据,尽量使用通用的数据类型
- 在SQL脚本中创建临时表时使用DROP TABLE IF EXISTS和CREATE TABLE IF NOT EXISTS的方式
DROP TABLE IF EXISTS dim.dim_employees;
CREATE TABLE IF NOT EXISTS dim.dim_employees;
(
employee_id BIGINT COMMENT '员工编号' ,
first_name STRING COMMENT '员工名字' ,
last_name STRING COMMENT '员工姓氏' ,
email STRING COMMENT '电子邮件' ,
phone_number STRING COMMENT '手机号码' ,
department_id BIGINT COMMENT '部门编号' ,
hire_date DATE COMMENT '雇佣时间' ,
salary DOUBLE COMMENT '薪资'
)
COMMENT '员工信息维度表'
PARTITIONED BY (ds STRING COMMENT '分区字段')
STORED AS ORC;
INSERT语句
--将有效ODS员工表数据写入员工信息维表
INSERT OVERWRITE TABLE dim.dim_employees PARTITION(ds)
SELECT a.emp_id AS employee_id
, a.first_name AS first_name
, a.last_name AS last_name
, a.email AS email
, a.phone AS phone_number
, a.dept_id AS department_id
, a.hiredate AS hire_date
, a.sal AS salary
, '${biz_date}'
FROM ods.t_hr_employees a
WHERE a.is_invalid = 1
;
本文有借鉴阿里云Dataworks编码规范,地址:https://helpcdn.aliyun.com/document_detail/137491.html

浙公网安备 33010602011771号