DataStage8使用笔记
(2010-11-18 17:07:45)
标签:
datastagedb2api数据查询杂谈executionofoperatorlogic |
分类: 技术 |
环境 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 咋不统一一个标准呢?!!)
2 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
前一篇:欢迎您在新浪博客安家

加载中…