【问题标题】:Informatica decode returns a disallowed valueInformatica 解码返回不允许的值
【发布时间】:2013-09-25 20:24:40
【问题描述】:

我在 informatica 的表达式转换中有以下解码语句:

(DECODE
(TRUE
, OPERATION1='I' and NOT ISNULL(a_new),'YES'
, OPERATION1='D'and NOT ISNULL(a_old),'YES'
, OPERATION1='U'and ( (
     (a<>b) 
  or (ISNULL(a_new) and NOT ISNULL(a_old)) 
  or (NOT ISNULL(a_new) and ISNULL(a_old))
      ) 
),'YES','NO CHANGE')
)

其中 a_new 和 a_old 都是整数(当它们出现时)。

这是奇怪的部分:

此解码语句在运行时会不断返回值 0(零)。我无法为我的生活找出原因。当我在调试器中运行它并评估解码时(右键单击表达式,单击“评估表达式”,将解码粘贴进去),它会正确评估为 YES 或 NO CHANGE。但是当它在调试器和生产环境中实际运行时,它的计算结果仍然为零。有人知道为什么吗?

【问题讨论】:

标签: decode informatica informatica-powercenter case-statement


【解决方案1】:

我的表情看起来不错。您应该检查使用它的字段定义。它要么被声明为integer(或其他一些数字数据类型),要么被分配了一个默认值。

【讨论】:

  • 我终于找到了问题所在。使用它的字段被正确转换(作为字符串)但在下游,在映射的后期,该值被转换为整数。演员通过映射传播回我的原始解码并弄乱了一切。和你想的差不多
猜你喜欢
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多