ETL 脚本书写规范
来源:互联网 发布:安卓跑分软件 编辑:程序博客网 时间:2024/06/06 01:40
2014/11/24
1. 前言
为了统一软件开发过程中关于SQL(Structured Query Language)编码的格式,使编码人员编写SQL代码遵从特定的风格,并养成良好的开发习惯,从而增强代码的可读性,便于交流和维护,特此收集。
1.1边界定义
规范主要应用于Teradata SQL 的DML以下几个语句编写约定
Select 语句;
Insert 语句;
Delete 语句;
逻辑判断语句;
类型转换语句;
以及相关的Teradata 函数、
Teradata 数据仓库项目实施过程中数据表现形态约定等内容
1.2 原则定义1、 要求代码行清晰、整齐,具有一定的可观赏性;
2、 代码编写要充分考虑执行速度最优的原则;
3、 代码行整体层次分明、结构化强;
4、 代码中应有必要的注释以增强代码的可读性;
5、 规范要求非强制性约束代码开发人员的代码编写行为,在实际应用中在不违反常规要求的前提下允许存在可理解的偏差。
2. 格式编排规范
2.1 注释约定
对于较为复杂的数据操作例程应有充分的注释,注明实现的功能,业务逻辑关系输入输出关系等内容,对于修改脚本,需在注释中标明修改人、修改时间。
注释中应包含以下内容:
脚本头注释:
脚本头的注释中需要注明修改人、修改时间、修改目的。
脚本行注释:
对于脚本中的硬编码需要注明含义。
单行或多行注释都用 ’ /* */’ 来标识。
注释中不可出现“@”符号。
脚本块注释:
对于脚本块的注释,修改人需要注释掉原脚本,对新增的脚本需要在第一行的注释中注明“start”,在最后一行注明“end”。
对于较为复杂的过程必须注明代码实现的功能以及相关的创建、修改记录
在主体上有分割的代码行建议加一空白行以示区分;
(1). 代码段中应用到的所有Teradata 关键字、保留字都应大写
可以使用 PL/SQL Developer:
Tools ==>
Edits ==>
keyword case ==>
uppercase
(3). 四个空格一个缩进
(4). 对应的括号通常要求在同一列的位置
(5). 行宽不超过120字符
(6). 同一级别的子句要求对齐
(7). 逗号放在每行的开头
(8). 分号放在SQL语句的最后,独占一行
3. 语法及数据操作约定
case语句:
用好子查询是提高代码执行速度的一个好方法,采用子查询来缩小结果集之间的操作将使系统运算的开销更小,当然Teradata的优化器也会优化代码的处理过程以最优的路径来完成用户的需求,但我们在编写代码时也要考虑性能的优化。子查询嵌套在Teradata数据仓库系统开发中是经常要用到的,因此代码的分层编排就非常重要。
表别名定义:
临时表的命名按照如下形式:
VT_ + 普通表名 [+功能]
“VT”表示该表为临时表,“普通表名”就是普通形式的表名,“功能”为可选项,一般可用Pre、Cur、Ins、Del、Upd等来表示.
在SQL语句中引用变量时,要在变量名两端加花括号
对日期变量的引用要在单引号内,如'${MYDATE}'
对PDATA区中的表操作库名要用变量,不可以写死。对STAGE区中的表一般直接写库名
NULL 的处理
ZEROIFNULL (数字型字段)或者
COALESCE (数字型字段,0)或
COALESCE (字符字段,’‘)
CAST (日期型字段 AS DATE FORMAT 'YYYYMMDD')
说明:通过以上函数处理后,如果字段值为NULL将返回 0值。
CASE
WHEN ( substr (id,strat_point, len) ( CASESPECIFIC)) ='Gt' THEN '1'
CAST(trade_date AS DATE FORMAT 'YYYYMMDD')
=CAST(str AS DATE FORMAT 'YYYYMMDD')
chars 取字符长度函数,需要对字段先trim,否则返回对应字段的最大长度。
对于全表删除,最后都要有all,且不需要和后面的insert组成多语句提交。
4. ETL加载策略规范
5. 常用TD SQL 知识介绍
Q:
除删除表的SQL语句外,每个SQL结束应该有.IF ERRORCODE <> 0 THEN .QUIT 12;判断语句。
在数据仓库系统项目开发中不建议使用UPDATE语句来进行数据的更新操作,可以采用替代的中间过度表完成表中数据的重新组织,从而实现原表数据值的更新。
一. 字段连接
需检查连接(||)出来的结果中间有没有存在空格,如有空格需要特殊处理。
一. UNION使用
A、union的时候所有字段定义均以第一个集合定义的为准,导致后面的集合如果定义的字符长度比第一个集合长,就会按照第一个集合定义的字符长度截断。
B、除非是特殊需要,建议采用多个insert代替union。
- ETL 脚本书写规范
- PowerCenter 7.1.3 ETL UNIX Shell 脚本书写规范
- 规范unity脚本书写
- [老欧的经验]Robotium脚本书写规范
- Qt在线讲座之QML脚本书写规范
- 数据仓库ETL流程规范
- ETL开发规范
- JAVA书写规范、命名规范
- C语言书写规范
- C#基本书写规范
- C#书写规范
- JAVA 书写规范
- C#书写规范
- C#书写规范
- java代码书写规范
- JAVA书写规范
- SQL书写规范
- 源程序格式书写规范
- 用链表实现的队列
- android STK名称客制化
- Vuforia ARSDK-Unity3D在Android下开发高通增强现实的小应用
- POJ 1160 Post Office DP
- android 如何屏蔽接收来自某些信道的小区广播消息
- ETL 脚本书写规范
- 关于高通实现同时识别多个标志
- 如何直接下载优酷视频?不用优酷下载器下载视频方法技巧
- 用数组实现的队列
- 浅谈协方差矩阵
- route命令
- 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
- 读书记之《Beginning Linux Programming》
- Spring 框架简介