我必须在我的场景中查找3个表。 以下是Lookup表的摘录。其中一行有大约600万行,另外两行各有500行,并且位于不同的链接服务器上。
LOOKUP_TABLE Invoice_number发票日期 123 05/05/2013 123A 05/05/2014 123B 05/05/2015
我有来自源文件的发票号码和日期。例如: 来源行: - src_invoice:123发票日期:05/05/2015 我想要所有包含发票编号的行,例如' 123 _'
因此我的LOOKUP SQL覆盖查询将是 从LOOKUP_TABLE中选择*,其中invoice_number如src_invoice +' _' ;
但是这给了我一个错误,因为在sql覆盖中无法替换input_port。
现在我不想使用Uncached查找,因为我必须查找3个这样的lookup_tables,每个行有600万,500和500行,并且在不同的链接服务器上。到达链接的服务器以查找每个源发票号码需要花费很多时间。
我想要多行的原因是因为我想要查找表中的两件事。 1.)检查src_date = Lookup_table.Invoice_Date,然后标记为重复 2.)如果src_date!= Lookup_table.Invoice_Date,则将字母附加到max(invoice_number)。 因此新的src_invoice将是123C
任何建议表示赞赏。如果你认为我对这个问题的解决方法是错误的,请提供一个不需要使用lookup sql覆盖的替代解决方案。
由于
答案 0 :(得分:0)
首先:对于6M行,最好使用Joiner Transformation
而不是Lookup
。并仔细选择Joiner上的Master
节点。
下一步:执行SQL Override以创建缓存。您无法为单个发票创建缓存,并尝试为所有发票读取它。这仅对uncached lookup
有用 - 您不希望(也不应该)在此方案中使用它。实际上,在这种情况下,您根本不需要任何SQL覆盖。
顺便说一下:SQL中的_
只匹配一个字符。如果您需要以“123”开头且可能包含4个以上字符的内容,请改用%
。