我在使用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 阶段时,这是正常结果吗?如果是这样,我们的团队应该知道它可能一直发生。
================================================= =====
[更新]
无论通过复制原始作业和 Oracle 上的目标表来创建新作业,都不会重现此错误。
一旦数据流被另一个转换器更正,原始作业和复制的作业正在发送没有阶段变量的正确数据流,即使第二个转换器在校正后被移除。
由于 #1 更新,原始作业中转换器中的阶段变量运行良好,但我无法针对不正确的数据流进行精确测试。
此类代码不起作用的常见原因是处理列的顺序。
编译器在尝试优化作业时可能会混淆它。这实际上是有效的,因为即使我们 see 列的自上而下排序,列 can 被视为未排序。 (连接器阶段应该按名称映射列。)我可能在这里混淆了一些东西,但以下建议仍然有效:
在 Trans_1 中,将您的代码替换为阶段变量。这些是自上而下处理的。
如果问题仍然存在: