输出列不匹配。用户在源限定符中定义的SQL查询

时间:2016-04-18 10:47:47

标签: sql sql-server relational-database informatica

我想我在这里遗漏了一些明显的东西。我的任务是通过仅更改源限定符部分来复制一个工作正常的映射。

原始映射看起来像这样,

OriginalMapping

首先,我不明白原始映射是如何简单地从源限定符连接到表达式。 由于用户定义的查询,列名应该完全更改。

例如

INSERT_DM to max(HVOLE.INSERT_DM)

在我的新复制映射中,当我点击"验证",

时,我的新资源限定符会给我这个错误

enter image description here

当我的查询实际输出5个单独的列时,它提到"正好是3个字段"这很奇怪。

请注意,我已为不存在的列创建了o_BEADHEIGHT1和o_BEADHEIGHT2。这些列是由我的用户定义的查询新创建的。

3 个答案:

答案 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作为输入。所以,要解决这个问题,

  • 将o_bedhight1和o_beadheight2从源连接到源限定符。
  • 如果您想要干净的SQ
  • ,请删除PROCCD,MAT_TYPE