《数据仓库编程规范》由会员分享,可在线阅读,更多相关《数据仓库编程规范(24页珍藏版)》请在金锄头文库上搜索。
1、 1数据仓库编程规范文档版本号:V1.0文档名称:数据仓库编程规范文档 (1.0).doc文档编号:文档修订号: 文档建立日期: 2009-2-28电子版文件名: 未经允许,不可全部或部分发表、复制、使用于任何目的 2文档修订摘要日期 修订号 描述 著者 审阅者 批准人/日期 31 引言编写目的编写数据仓库开发规范(dbsql 系统) (1.0) 的目的是:dbsql 封装了访问 db2,oracle,greenplum,Sybase 和 Teradata 数据库的方法,形成了一套访问db2,oracle,greenplum,sybase 和 Teradata 数据库的统一接口。dbsql 不
2、仅提供了对db2,oracle,greenplum,sybase 和 Teradata 访问方法的统一,而且提供了一些方法屏蔽 5 个数据库之间 sql 语言的差别。这样对于应用程序,只需要编写一套代码,就可以操纵db2,oraclee,greenplum,sybase 和 Teradata 数据库,对开发工程师而言,只用熟悉 sql92 的标准sql 和此文档 sql 函数就本文档供以下相关人员阅览: 参于数据仓库设计评审的专家人员; 参与数据仓库软件开发的软件部人员; 参与数据分析系统测试人员。1.1 背景介绍 开发的软件系统的名称:数据仓库编程规范 开发单位:数据分析部 系统使用单位:
3、该软件系统是数据仓库底层开发跨平台异构数据仓库的基础平台1.2 术语定义1.3 参考资料参考资料共包括: Tcl/Tk 编程权威指南 Expert One on One: Oracle 4 Oracle 数据库 DBA 专题技术精粹2 DBsql 环境配置2.1 目录设置2.2 环境变量主要环境变量设置包括: $DBSQL:程序安装点,开发时设置为个人目录。 $AGENTLOGDIR:Scehdule Server 日志采集目录,通常设置为$DBSQL/log $AGENTTRACEDIR:日志及 TRACE 文件目录。 (Schedule Server 不采集,可用于存放调试信息) $TOO
4、LS:存放 tcl 运行环境包及异构数据库编译的动态包安装目录。用户可以在用户目录下创建.profile 文件,例如:export HOME=/home/dw/dwexport DBSQL=$HOMEexport AGENTLOGDIR=$DBSQL/logexport AGENTTRACEDIR=$DBSQL/trace 52.3 开发与安装开发时需要作如下设置: 将 dss 及_common.tcl 复制到$DBSQL/bin 下; 将_common.cfg 复制到 $DBSQL/etc 下; 参照 dwd_trade_base_ds.tcl 开发各处理程序,有关dwd_trade_bas
5、e_ds.tcl 的详细说明参见具体例子; 如需要专用配置文件则在$DBSQL/etc 下创建.cfg 文件,专用配置文件中允许覆盖公共配置项,但需要慎用。 执行方法(以 dwd_trade_base_ds.tcl 为例):. /home/dw/.profiledss s dwd_trade_base_ds.tcl t 20090228 u 100 v 200 -o注意:1) $DBSQL 在安装时被定义为安装点路径,因此,每个用户需要在开发时把该变量定义到自己的开发目录下。2) dss、_common.tcl 为公用程序,common.cfg 为公共配置,均不得进行修改。3 DBsql 编程
6、规范3.1 注释 在每一个 tcl 源文件头部都要加上关于本文件的注释,列出:文件名、功能描述、作者、生成日期、修改日志、版权说明等。建议采用如下格式: 6#*# * 文件名称:# * 功能描述:# * 创建者:# * 创建日期:# * 修改日志:# * 修改日期 修改人 修改内容# * -# *# * Copyright(c) 2009 .com Co.,Ltd (# * All Rights Reserved.#* 元数据注释信息#METADATA_BEGIN*# * 数据仓库元数据配置信息# INPUT_TABLE = ODS_SQL_SAMPLE_YYYYMMDD 注:如果是月表则 T
7、ABLE_NAME_YYYYMM,多个表名之间以逗号,分割, 下同# OUTPUT_TABLE = DWD_SQL_SAMPLE_YYYYMMDD# DIM_TABLE = DIM_SQL_SAMPLE# TMP_TABLE = ODS_SQL_TEMP# T_TABLE = 一直保留不做删除临时表# MAIN_JOIN_COLUMN = 表表和之间的关联字段,但和维表字段的关联无需填写 ,多个字段之间以逗号,分割#METADATA_END* 在每一个函数头部都要加上关于本函数的注释,列出:函数名称、功能描述、输入参数、输出参数、返回值等。建议采用如下格式: 7#*# * 函数名称:# * 功
8、能描述:# * 输入参数:# * 输出参数:# * 返回值:#* 注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。 在程序块的结束行下一行加注释标记,以表明某程序块的结束。当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。if . # program codewhile index = 10 if !is_null 6 注释与所描述内容进行同样的缩排。这样可使程序排版整齐,并方便注释的阅读与理解。proc ExampleFun paraval # code one comments CodeBlock One#
9、code two comments CodeBlock Two 7 将注释与其上面的代码用空行隔开。# code one comments program code one# code two comments program code two 避免在一行代码或表达式的中间插入注释,否则容易使代码可理解性变差。 93.3 表名程序名命名规范 表名命名格式说明:层次_ 主题 _表内容_ 分表规则 解释: 层次:数据仓库的分层定义,目前数据库自低到高分为 ODS, DWD, DW, DM,ST,表命名时根据表具体所属层次填写,如ODS_TRD_BYD_BASE_YYYYMMDD, DWD_TRD_
10、BYD_BASE_YYYYMMDD 主题:数据仓库的当前主题主题名 英文缩写客户主题 CRD交易主体 TRD产品主题 PRD资金 FND收费 CHG安全 SCR 表内容:在表名总长度不超过 30 个字符,尽量详尽说明表的具体内容,在所有层次中表内容应保持一致。对于出现一下关键字单词的按以下规则进行缩写,如果缩写后表名部分出现和主题相同的缩写请去除表名中该缩写(如对表DWD_BEYOND_TRADE_FUND_BILL 进行规范划缩写则为DWD_TRD_BYD_TRD_FUND_BILL,出现重复 TRD,所以最后缩表名应为DWD_TRD_BYD_FUND_BILL):关键字单词 缩写BEYON
11、D BYDACCOUNT ACTONLINE OLWITHDRAW WTHDRWUNFNSH UNFHDETAIL DTLFREEZE FRZINSTRUCTION ISTRNTRADE TRD 10 分表规则:日表 YYYYMMDD,月表 YYYYMM,日汇总 DS,月汇总 MS,日累计DT,月累计 MT 程序名命名格式说明目标表名( 去除分表规则部分)_ 程序类型.tcl程序名称一律小写 解释:目标表名(去除分表规则部分 ):目标表名为程序生成数据的表名,如数据ODS_TRD_BYD_BASE_YYYYMMDD- DWD_TRD_BYD_BASE_YYYYMMDD,那么程序命名成 dwd_
12、trd_byd_base_dd.tcl程序类型: 类型说明 英文缩写每日运行程序,且目标表为日表 dd每月运行程序,且目标表为月表 mm每日运行程序,且目标表为日汇总 ds每月运行程序,且目标表为月汇总 ms每日运行程序,且目标表为日累计 dt每月运行程序,且目标表为月累计 mt3.4 标识符命名规则 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。例如如下单词的缩写能够被大家基本认可。temp 可缩写为 tmpmessage 可缩写为 m
13、sg 函数或过程名建议统一采用匈牙利记法,函数或者过程的名称能够简单体现函数或过程的功能。GetCustStatusOdsToBalanceGetNotNull 对于局部变量命名,可以采用全小写加下划线的风格,也可以用单个有 11具体含义的单词做变量名,但禁止用单个字符(如 i、j 、k.)做变量名,i、j、k 可以做局部循环变量。例如:log_fdtrace_fd 对于全局变量命名,尽量使用匈牙利记法,首字母小写,与过程名区分。例如:opTimecityId3.5 SQL 书写规范由于 SQL 语句在 DBSQL 系统中是一个非常重要的组成部分,所以对 SQL语句的书写规范做单独说明。 1、SQL 语句的所有表名、字段名全部小写,系统保留字、内置函数名、SQL 保留字大写。示例:SELECTemployee_id, employee_name, SUM