加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

DataStage8使用笔记

(2010-11-18 17:07:45)
标签:

datastage

db2

api

数据查询

杂谈

execution

of

operator

logic

分类: 技术
环境 datastage8.1

1 db stage 查询数据的问题
之前在用 ds7.5 时 使用 oracle enterprise stage 时 自定义sql语句,select 出的字段顺序不需要与 stage 中的 table definition 的字段顺序一致,即两者是通过名字的方式对应起来的。
目前使用 ds8.1 使用 db2 api stage 利用上面的经验是错误的,这个stage 是使用 位置的方式对应的,这小小的差别,却让我郁闷了一天,血的教训谨记http://www/uc/myshow/blog/misc/gif/E___6706EN00SIGG.gif......(MD datastage  咋不统一一个标准呢?!!)

Transformer_02,0: Failure during execution of operator logic.
引起这种错误的原因很多,现在重现其中一种。
在Transformer 符合语法 也 编译通过,但在run的时候 报错,百思不得其解?
----修改之前------
If DSLink_02.SUNSET_CALC > DSLink_02.CERTS_PERIOD_END Or IsNull(DSLink_02.SUNSET_CALC) Then "G"  Else If DSLink_02.SUNSET_CALC > DSLink_02.CURR_DATE And DSLink_02.SUNSET_CALC <=  DSLink_02.CERTS_PERIOD_END Then "Y" Else "R"
----修改之后------
If  IsNull(DSLink_02.SUNSET_CALC)  Or  DSLink_02.SUNSET_CALC > DSLink_02.CERTS_PERIOD_END  Then "G"  Else If DSLink_02.SUNSET_CALC > DSLink_02.CURR_DATE And DSLink_02.SUNSET_CALC <=  DSLink_02.CERTS_PERIOD_END Then "Y" Else "R"
看清楚了吗? 我将对同一字段的空值判断放在了前面,就可以了。
真正的原因不得而知,和大家讨论过,觉得是在ds中 or and 与c 中的 还是有一定的区别的 比如 A or B 在如果A=true 则B 就不执行了 ,而ds中 貌似要执行的 ;如果依据这一点,如果已经先判断一个字段的大小,然后再判断是否为空,当然是不合理的;当然这只是猜想,有待实验验证。不过这种问题的解决就是这样了http://www/uc/myshow/blog/misc/gif/E___6708EN00SIGG.gif

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有