DataStage作业开发规范V23.docx
《DataStage作业开发规范V23.docx》由会员分享,可在线阅读,更多相关《DataStage作业开发规范V23.docx(18页珍藏版)》请在冰豆网上搜索。
DataStage作业开发规范V23
DataStage开发规范
北京先进数通信息技术有限公司
2007年11月
文档信息
标题
DataStage开发规范
创建日期
2007-11-4
文件名
DataStage开发规范V2.3.doc
存放目录
作者
陈博
修订记录
日期
描述
作者
2007-11-09
修改了SQFSTAGE的命名以及参数命名
陈博
1.布局规范
布局应自左向右,自上而下,层次分明,布局协调,主要的数据流为从左到右成直线(单一输入输出)或成扇形(多输入输出),次要数据流为自上到下成直线(单一输入输出)或成扇形(多输入输出),STAGE与STAGE之间应留有足够的空间展示STAGE之间连接线上的信息。
单主要输入输出,如下图:
多主要输入输出如下图:
2.注释规范
作业的头上须表明作业加工的档名,下方须表明作业加工逻辑,
所有的属性中须注名作业的作者,及设计思路。
对设计的流程做适当的说明以便让人更易理解,如上图。
3.datastage命名规范
注意事项:
⏹Stage的命名全部使用英文,参数注释也必须使用英文。
⏹Job中使用Annotationstage来做模块说明可以使用中文注释。
⏹命名规范为:
三位大写字母表示stage的类型+小写字母组成的其它信息。
⏹所有的输入、输出以及HASH文件均采用参数赋值,参数名与Sequentialfile的命名类似。
3.1Sequentialfile输入输出分隔符
输入输出的分隔符号格式如下图:
3.2Project命名
分成两个Project,一个用于开发odsdvlp,一个用来管理已经完成的作业:
odsver。
3.3Job目录的命名
根据实施阶段的不同来命名job的目录。
在odsdvlp中:
1.逻辑模型设计目录
在Jobs下建立目录logicmodel。
再在logicmodel目录下建立不同源系统的目录,用于存放逻辑模型设计阶段的各个源系统的job,并且作业名后缀为“_lgc”。
2.物理设计目录
在Jobs下建立目录physicmodel。
再在physicmodel下建立不同源系统的目录。
用于存放物理模型设计阶段的各个源系统的job,并且作业名后缀为“_phy”。
3.个人目录
在Jobs下,建立目录test,test中为每个人创建一个私人用来做调试的目录。
3.4Job的命名
3.4.1按功能划分的job命名
此种job的命名是针对一项任务拆分成为了多个job的命名方式
格式:
●逻辑模型阶段:
Systemname_targetsystemname_tablename_jobtype_lgc
●物理模型阶段:
Systemname_targetsystemname_tablename_jobtype_phy
说明:
系统名(与业务系统不属于一个概念)
说明
bcv
数据源(INFORMIX数据库)
fs
文件服务器
sdm
标准层
fdm
基础模型层
待补充
Systemname:
源系统的名称
Targetsystemname:
目标系统名
Tablename:
目标系统的表名称
Jobtype:
job的任务类型
Jobtype
说明
Ex
抽取(Extract)
Tr
公共代码转换(Transform)
Ld
加载(Load)
FTP
传输(FTP)
待补充
3.4.2单独流程的job命名
此种job的命名是针对一个任务在一个job中就全部完成的命名方式。
格式:
●逻辑模型阶段:
srcsystemname_targetsystemname_tablename_lgc
●物理模型阶段:
srcsystemname_targetsystemname_tablename_phy
说明:
Srcsystemname源系统名称
Targetsystemname目标系统名称
tablename目标系统表名
3.5Stage的命名
StageName
命名
说明
Aggregator
AGG_description
聚合
DB2/UDBAPI(DB2/UDBEnterprise)
DB2_tablename
DB数据表,其中tablename为表名
FtpEnterprise(ftpplug-in)
FTP_direction_filename
FTP,其中direction为ftp的方向,get为下传,put为上传,filename为生成的文件名
Merge
MRG_description
数据合并
ODBCdataaccess
ODB_tablename
ODBC数据表,其中tablename为表名
OracleOCI
ORA_tablename
Oracle数据表,其中tablename为表名
InformixCLI
INF_业务系统名_tablename例如:
从CBS采集数据到文件服务器:
inf_cbs_t_srm_itm_dict
Informix数据表,其中tablename为表名
Sequentialfile
卸数阶段,只会有一个输出文件,命名为:
SEF_业务系统_原表表名_属性。
从文件系统取数据,加工到SDM,只会有一个输入文件,命名同卸数的输出:
SEF_业务系统_原表表名_属性。
WARING和REJECT文件,只出现在从文件系统取数据,加工到SDM,命名为:
SEF_业务系统_原表表名_属性_wr/rj。
业务系统包括:
CBS、PBS、CMMS、ATMP
属性包括:
ADD、ALL
文件操作,参见上面的文件命名规范
Systemname为源系统的名称
Table为操作文件数据的表名称
增量全量标志为All:
全量
Add增量,
del-删除文件。
如果存在跨系统的生成的目标文件,源系统名填写输入主表对应的系统
Hashfile
HASH_业务系统_原表表名_属性。
注:
在此次项目中不会出现
Sort
SRT_description
数据排序
Transformer
TRF_description
数据转换
由于需要根据输入、输出文件的stage的名称进行数据平衡跟踪以及,故输入输出文件的stage命名必须严格按照上述的规范。
3.6Link的命名
格式:
LK_description
说明:
LK为link的简称,所有的link命名都使用LK作为头。
如Sequentialfile的link指向一个lookup。
则link命名为LK_description
注意:
1.如果一个stage只有一个link的输入,则不需要填写Description,只需要填写link的序号。
2.如果一个stage有多个link的输入或输出,则需要填写Description。
Description的填写方式要体现link的主从关系。
为主键的link的Description填写master,其他的link填写subject+序号。
例如一个joinstage有2个link的输入,主的link为LK_left,另一个link为LK_right。
如一个filterstage有两个输出(分别是性别是男的和女的的输出),则一个link命名为LK_male,另一个link命名为LK_female等。
3.7Routine命名
格式:
RT_functionname
说明:
functionname为Routine的功能描述
3.8DATASTAGE中TableDefinition命名
ETL过程中的TableDefinition共有以下几类:
3.8.1Source
格式:
source/systemname/tablename
sdm/systemname/tablename
fdm/systemname/tablename
说明:
systemname为源系统简称
tablename为源表名
3.8.2Target
格式:
systemname/target/tablename
说明:
systemname为目标系统简称
tablename为目标表名
3.9DATASTAGE中Schema命名
格式:
$PATH_CFG/schema/systemname_tablename.osh
说明:
systemname为源系统简称
tablename为源表名
3.10Storeprocedure程序命名
格式:
systemname_functiondescription
说明:
systemname为系统简称
functiondescription为存储过程的功能说明,如果存储过程是为了加载某张表,则直接使用表名,如果该存储过程只是为计算某一特定字段,则可用该字段名表示,如果是同时计算多个字段,则独立命名
3.11ShellScript程序
格式:
systemname_scriptdescription
说明:
systemname为系统简称
scriptdescription为shell脚本的功能说明
3.12SQLScript程序
格式:
systemname_scriptdescription
说明:
systemname为系统简称
scriptdescription为sql脚本的功能说明
3.13Reject文件的相关规范
文件命名:
WARING和REJECT文件,只出现在从文件系统取数据,加工到SDM,命名为:
业务系统_原表表名_属性_wr/rj。
业务系统包括:
CBS、PBS、CMMS、ATMP
属性包括:
ADD、ALL
Reject的内容:
长度不对的数据
3.14控制文件的相关规范
文件命名:
[目标文件名]_ctl.xml
内容规范:
(举例)
xmlversion="1.0"encoding="ISO8859-1"?
>
开发样例:
(参考samplejob:
hdfile_sample_xml)
3.15就绪文件的相关规范
文件命名:
[target_system]_[source_system]_xxx_READY_yyyymmdd.xml
内容规范:
xmlversion="1.0"encoding="ISO8859-1"?
>
FF1010_0001_XXX_20060121_000.dat
2344560
117729
所有的输入、输出文件均采用参数赋值,参数名与Sequentialfile的命名类似。
4.参数规范
所有的输入、输出文件、WARING文件以及REJECT文件均采用参数赋值,参数名与Sequentialfile的命名相同。
Hash文件:
同于HASHFILESTAGE的命名
Hash文件做匹配的字段需要做去空处理
日期采用par_date
以下关于数据库的参数,采用环境变量,用户自定义的参数:
数据库:
$DB
数据库密码:
$DB_PASSWD
数据库用户:
$DB_USER。
5.目录规范
开发、测试环境的目录如下:
目录名
说明
/PATH_HOME/bin
执行程序目录
/PATH_HOME/etc
配置文件目录
/PATH_HOME/sql
sql脚本目录
/PATH_HOME/script
引用的脚本目录
/PATH_HOME/tools
通用工具目录
/PATH_HOME/datastage
DS的project相关目录
/PATH_HOME/log/yyyymmdd
日志目录
/PATH_HOME/file
数据文件目录
/PATH_HOME/file/wr
存放目录WARING文件
/PATH_HOME/file/sdm/
存放标准层落地文件
/PATH_HOME/file/fdm/
存放模型层落地文件
/PATH_HOME/home/file/fs/
存放FS文件
/PATH_HOME/file/rj
Reject文件目录
/PATH_HOME/file/hash
hash目录
其中file内的目录层次以及目录内的文件命名如下表示:
/PATH_HOME/file/fs/cbs/20071011/cbs_源系统的表名_all_20071011.dat
/PATH_HOME/file/sdm/cbs/20071011/cbs_sdm_sdm的表名_all_20071011.dat
/PATH_HOME/file/fdm/crd/20071011/sdm_fdm_相应主题的表名_20071011_all.dat
hash文件如下:
/PATH_HOME/file/hash/fdm/crd/20071011/sdm_fdm_对应sdm的表名_20071011_all.dat
rj文件如下:
/PATH_HOME/file/rj/cbs/20071011/cbs_源系统的表名_all_rj_20071011.dat
Wr文件如下:
/PATH_HOME/file/wr/cbs/20071011/cbs_源系统的表名_all_wr_20071011.dat
6.公共参数、环境变量说明
6.1通用参数
系统环境变量
Ø静态环境参数(dsproject)
环境变量名
解释
类型
PATH_HOME
主目录
String
PATH_DATA
数据存放主目录
String
PATH_DATA_IN
输入数据目录
String
PATH_DATA_OUT
输出数据目录
String
PATH_DATA_TEMP
中间数据目录
String
PATH_DATA_DATASET
dataset数据目录
String
PATH_LOG
日志目录
String
PATH_CFG
配置文件目录
String
PATH_BIN
执行程序目录
String
PATH_TOOLS
工具目录
String
PATH_SQL
sql脚本目录
String
PATH_SCRIPT
其他脚本目录
String
SDM_DB
数据库
String
SDM_DB_USR
数据库用户
String
SDM_DB_PWD
数据库密码
Encrypted
CBS_DB
CMS_DB
……
Ø动态运行参数
参数变量名
解释
类型
par_date
运行日期
String
par_branch9
9位分行号
String
par_branch3
3位分行号
String
par_yyyy
四位年
String
par_mm
两位月
String
par_dd
两位日
String
par_yy
两位年
String
par_m
一位月(1-9,10-A,11-B,12-C)
String
par_t
每月的第几旬
String
par_yesterday
昨日
String
par_btype
业务类型
String
6.2参数管理、使用
Ø环境参数由系统管理员通过DATASTAGEADMINISTRATOR进行统一维护;
Ø作业开发人员,在开发时定义job的公共变量、私有变量,并将私有变量填写到最新《*********作业设计模版.xls》;
Ø作业调度人员通过填写后的《*********作业设计模版.xls》配置生成作业调度的配置表(jobsequence登记表);
Ø系统管理员根据填写后的《*********作业设计模版.xls》生成作业参数配置文件;
Ø公共组件设计人员根据作业参数配置文件进行相关参数的读取、传递
Ø每一个job必须引入5个环境变量值:
$APT_CONFIG_FILE$ODS_DB$ODS_DB_USER$ODS_DB_PWD$PATH_HOME
6.3参数传递
日常运行:
Ø作业调度主控根据jobsequence的登记表按照一定业务规则动态生成runcycle的执行控制文件/表(包括内容:
数据日期,jobsequence名,前置jobsequence名,schedule,执行状态等);
Ø作业调度根据runcycle的执行控制文件/表进行调度,并传递相关的数据日期参数;
ØJobsequence的前处理作业读取“作业参数配置文件”并进行相关参数的组装,并判断相关依赖文件的到达情况,传递作业的参数调用相关job;
附录1.SAMPLE
附录2.《关于开发环境使用及注意事项》
为规范项目组开发环境使用及保证项目组高效完成开发任务,现将开发环境分配情况及使用中注意事项公布,请项目组成员遵照执行。
开发环境:
分组
开发主机
开发用户
Project
注意事项:
1、各组开发人员请使用分配的开发用户及项目,对于各个Project中的公共部分(表定义、公函、备份等)请各个小组指定专人进行维护。
2、对于每个开发环境下的目录请按照规范使用,不得擅自建立、删除目录。
开发Job请在指定目录进行。
3、开发人员完成分配任务后,可将完成的Job或者TableDefine从工具中Export出来进行提交,禁止导出整个Project。
4、开发完成的任务请开发人员主动提交到各个小组负责人处,各个小组负责人审核开发人员提交的任务完成情况,确认无误后提交到项目组版本管理员。
项目组正式版本的管理工作由版本管理员进行。
5、开发人员每日将阶段的成果(job)导出,并提交CC进行版本管理。
注意事项:
1、通常一个Project中,Job数量控制在300~500个左右以内。
2、每个Job中,Stage最多控制在15个左右以内。
3、与工程无关的文件尽量不要放在工程目录里,不然对以后备份及版本控制都不利。
4、在Job开发作业时,尽量用4个客户端去操纵数据,不要到后台去手工操纵数据,这样属于非法操作,将带来不必要的麻烦