IBM Data Stage 上的复制阶段

问题描述 投票:0回答:1

我在使用Copy Data向表中插入数据时发现了一个奇怪的事情。 所有列都在变压器中处理,变压器中有两个特殊列。

A列使用索引函数对字符串进行LIKE操作。 B列是A列要使用的字符串,在一列中按字母顺序排序。

以下代码使用索引函数为列A赋值。

IF index(COL_B, "ABC", 1) >0 THEN 'ABC' ELSE COL_B

我在目标表上的预期结果是A列有'ABC'或B列的原始字符串。 当我检查表格时,A 列根本没有改变。

顺便说一句,在 COPY 阶段和目标表之间放置一个转换器后,A 列被更新。

我无法通过谷歌搜索找到它发生的原因或任何线索/解释。当我们使用 COPY 阶段时,这是正常结果吗?如果是这样,我们的团队应该知道它可能一直发生。

  1. 原始流程 - 不更新列 A 和 B

  1. 在 COPY 和 Target 表之间添加了一个转换器 - 更新了列 A 和 B

================================================= =====

[更新]

  1. 无论通过复制原始作业和 Oracle 上的目标表来创建新作业,都不会重现此错误。

  2. 一旦数据流被另一个转换器更正,原始作业和复制的作业正在发送没有阶段变量的正确数据流,即使第二个转换器在校正后被移除。

  3. 由于 #1 更新,原始作业中转换器中的阶段变量运行良好,但我无法针对不正确的数据流进行精确测试。

transformer-model datastage
1个回答
1
投票

此类代码不起作用的常见原因是处理列的顺序。

编译器在尝试优化作业时可能会混淆它。这实际上是有效的,因为即使我们 see 列的自上而下排序,列 can 被视为未排序。 (连接器阶段应该按名称映射列。)我可能在这里混淆了一些东西,但以下建议仍然有效:

在 Trans_1 中,将您的代码替换为阶段变量。这些是自上而下处理的。

如果问题仍然存在:

  • 尝试使用复制阶段的强制选项
  • 或联系 IBM 支持以进行深入分析。
© www.soinside.com 2019 - 2024. All rights reserved.