我想我在这里遗漏了一些明显的东西。我的任务是通过仅更改源限定符部分来复制一个工作正常的映射。
原始映射看起来像这样,
首先,我不明白原始映射是如何简单地从源限定符连接到表达式。 由于用户定义的查询,列名应该完全更改。
例如
INSERT_DM to max(HVOLE.INSERT_DM)
在我的新复制映射中,当我点击"验证",
时,我的新资源限定符会给我这个错误当我的查询实际输出5个单独的列时,它提到"正好是3个字段"这很奇怪。
请注意,我已为不存在的列创建了o_BEADHEIGHT1和o_BEADHEIGHT2。这些列是由我的用户定义的查询新创建的。
答案 0 :(得分:2)
您遇到此问题的原因是,源限定符中的5个端口中有2个未与源定义链接。此验证仅考虑与您链接的源限定符端口源定义以及下一次转换。
基础是
1)在SQL覆盖查询中选择的字段数应与Source限定符中与下一个转换链接的端口数相匹配。名称不必相同,但顺序必须相同。
有趣的是,Informatica将SQL查询中的字段映射到源限定符输出链接而不是源限定符端口。因此,SQL查询中的第一列被映射到第一个链接,第二列被映射到第二个链接,依此类推。
2)Source Qualifier转换中的所有端口都需要与Source定义链接。您可以删除源限定符转换中未使用的端口以避免混淆。
答案 1 :(得分:1)
SQ中的端口名称与选择查询字段不匹配无关紧要。只有港口的顺序很重要。此外,它只考虑与下一次转换连接的端口。
答案 2 :(得分:1)
源限定符不是表达式转换,不能像一个一样使用。对于你的例子,LOT_NO,MCD_ID和TEST_TS被连接到输入和输出链接,这就是为什么你得到错误'正好3个字段被投射。& #39 ;. source限定符中的字段应连接到输入和输出链接,以将其视为有效端口。即使连接了5个源限定符输出端口,但连接3作为输入。所以,要解决这个问题,