• 1. DS的经验总结开发流程 开发规范 开发经验
  • 2. 开发环境测试环境生产环境DSExport.dsx提交/反馈提交提交备 份
  • 3. DS的经验总结开发流程 开发规范 开发经验
  • 4. 数据流向及注释1所有的输入数据文件在左侧
  • 5. 数据流向及注释2主输入数据文件在左侧 从输入数据文件在上方
  • 6. JOB属性说明
  • 7. JOB属性说明
  • 8. sequential file格式
  • 9. 命名规则- JOB名称存量以N开头,增量以I开头 CIF层使用Cv,以源文件名结尾 LDF层使用Tr,以目标文件名结尾 LOD层使用Ld,以目标表名结尾 要求目标文件名和目标表名首写字母大写
  • 10. 命名规则-控件名称
  • 11. 命名规则-落地文件名称CIF层:源文件去掉‘Exp_’,扩展名为‘.ds’ 如:Exp_InsureVehc_TOther.EXF=》InsureVehc_TOther.ds Exp_InsureClaimVehc_CPay.EXF=》InsureClaimVehc_CPay.ds LDF层:首字母为大写的目标表名,扩展名为‘.ds’ Reject文件的扩展名为‘.rej’ 如:Agreement_request.ds Agreement_request_001.rej
  • 12. 命名规则-连线使用的名字为LKXX 连线上的图标不发生重叠
  • 13. DS的经验总结开发流程 开发规范 开发经验
  • 14. 表定义的必要性字段名的定义,比如保单号,(polno,plc_no,policyno)使用多个不同的名称造成歧义 null与not null的不一致,输出文件定义与输入文件定义,造成很多警告信息
  • 15. EXF文件格式-分隔符定义
  • 16. EXF文件格式-列从Table define导入
  • 17. CIF层的处理方法数字型可以直接赋予目标 日期型可以直接赋予目标 对不需要的列不做映射 由于导入数据中CHAR型的长度不一,在CIF层CHAR型用VARCHAR型代替 第一列若为VARCHAR型,使用col[1,len(col)-1] 其他字符串列col[2,len(col)-2]
  • 18. CIF层的处理方法
  • 19. 回车(carriage return)与换行(line feed)Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
  • 20. 回车(carriage return)与换行(line feed)EXF文件若在windows下编辑,可能会产生多余的回车,在运行时会有警告。可以使用vi编辑器去除该符号,也可通过其他方法去除。
  • 21. LDF层的处理方法对日期型或数字型赋空值时,使用函数SetNull() 。 由于rej文件为Sequential_File,对存在Null的列无法落地,需设置文件格式属性‘Null field value’。 若列设置为非空,但列中有Null值,不论是否设置‘Null field value’,该行无法落地。
  • 22. Sequential_File数字类型的处理Integer类型只能读入-2147483648~2147483647之间的整数 BigInt类型只能读入-9223372036854775808~9223372036854775807之间的整数 Decimal类型读入的整数与Length设置有关。如当Length=5时,可以读入-99999~99999之间的整数。
  • 23. Sequential_File数字类型的处理当数字字符串中有非法字符时,若非法字符出现在首位,整条纪录被reject,若非法字符出现在中间或结尾,输出该字符左边的数字. 当读取或落地为Null的数据时,需设置Null field value值,否则该条数据被reject
  • 24. Sequential_File日期类型的处理当字符串与设置的格式不符时,该行数据被reject. 当读取或落地为Null的数据时,需设置Null field value值,否则该条数据被reject
  • 25. Transformer的处理对需要计算的多个相似列可使用局部变量
  • 26. Transformer的处理对Transformer的使用尽量少,做到尽量合并,以提高job运行效率。 对于字符型字段,长度为零的字符串不等于NULL值;但导入数据库时会将该字符串认为是NULL。
  • 27. Transformer的处理当源字段为Null值时无法做逻辑、数学、字符串运算,否则这条记录被drop掉。 若有多条输出Link,当其中一条Link因为Null值运算时,也会使其他Link上的记录被drop。 为避免被drop发生,可以根据情况使用IsNull(),NullToEmpty()等函数避免。
  • 28. Transformer的处理增加常整型数据时,若该常量值过大,需使用StringToDecimal进行处理。
  • 29. Transformer的处理在使用StringToDate时,若格式发生错误,数据会输出若干*符号,不会产生警告信息. 在使用StringToDeciamal时,若源中有非法字符,返回0值.不会产生警告信息.
  • 30. Transformer的处理当使用条件过滤数据时,对类似if_else的数据输出应该使用Otherwise/Log,而避免两条都使用逻辑判断。
  • 31. Join的处理对INPUT列按KEY值HASH排序,且键值顺序相同。 对不输出的列事先不做输入。 注意内连接、左连接、右连接、全外连接的区别。
  • 32. Join的处理Key值中一个为integer型,一个decimal型时,无法正确连接。 Decimal型为Key值时,Length与Scale必须相同。
  • 33. Join的处理在左连接且从表数据没有被连接上时,若input列和output列可空,output数据为Null;若input列和output列不可空,output数据为0,‘’,‘0001-01-01’ ;若input列不可空output列可空, output数据为0,‘’,‘0001-01-01’ ;若input列可空output列不可空,Job出错;
  • 34. Join的处理在左连接时,为了能准确区分是否连接上从表,在从表端加入伪列常数,通过对该常数的值做判断
  • 35. Change_Capture的处理对两个具有相同列的数据做比较 可以分别得到两个源文件行数据全相同、行数据部分不同、以及只有一个源存在的行 需要两个源做HASH排序
  • 36. Merge的处理与Join Stage相似 Merge前需要做Key值的去重操作 只能有一个Master Link,可以有多个Update Link,每个Update Link可以对应一个Update Reject Link Unmatched Masters Mode选项对Output有重要影响。
  • 37. Lookup的处理对连接字段可否为空必须一致 对没有查找到的数据需Continue处理
  • 38. Lookup的处理当有多个分区时,为了确保数据能正确连接,需要对Lookup Link 做Entire分区
  • 39. Lookup、Merge、Join的区别内存的使用方式不同 不匹配行的处理方式不同 输入需求不同(排序、去重)JoinsLookupMergePrimary Input: port 0 LeftSourceMasterSecondary Input(s): ports 1,…RightLookup table(s)Update(s)
  • 40. Sur_Key_Generator的处理在多个结点运行时,可能产生跳号的现象,为避免这种情况,需做如下设置
  • 41. Aggregator的处理Input Link必须是根据主键的Hash排序,否则需重新排序 Option中的Method设为Sort,可改进运行效率
  • 42. Remove_Duplicates的处理去重字段与排序字段一致时,可以使用默认并行方式。
  • 43. Remove_Duplicates的处理当去重字段与排序字段不一致时,Stage的执行模式需设置为
  • 44. Remove_Duplicates的处理当去重字段与排序字段不一致时,字段排序与去重顺序需一致,且
  • 45. 多进程的处理对Parallel Job,需修改Job参数,选中Allow Multiple Instance
  • 46. 多进程的处理对Sequence Job,需修改Job参数,选中Allow Multiple Instance,此外还需修改控件参数Invocation Id,使调用ID能动态改变
  • 47. 命令行服务的启动与停止 $ cd $DSHOME/bin $ ./uv -admin –stop $ ./uv -admin –start 检查纪录数 $ dsrecords filename.ds
  • 48. 命令行删除连接文件和纪录文件 $ orchadmin rm filename.ds
  • 49. 相关优化-减少数据量
  • 50. 相关优化-减少不需要的列
  • 51. 相关优化-先执行减少数据量的操作
  • 52. Question
  • 53. Thank you