在我的数据流中,经过一些查询,我会得到重复的客户记录(它们不是完全重复的,只有客户ID是相同的),基于客户的一些属性,如城市,位置。我需要在其中选择一条记录。
如何在SSIS数据流中实现此目的
以下是示例数据:
;with cust (CustomerID,Cutomer_Name,score)
as
(Select 1 as CustomerID, 'abd' as Cutomer_Name, 100 as Score
union
select 1,'abd',null
union select 1,'abd',20
)
select * from cust
从这里开始,我需要选择得分最低的记录,并将该行只发送到决赛桌。
在SQL中使用Rownum函数很容易实现,但这种情况发生在SSIS中的数据流期间
答案 0 :(得分:2)
在SQL命令上执行源的数据访问模式。
答案 1 :(得分:1)
使用MultiCast将其拆分为两个输出 - 例如Output1和Output2。其中一个输出连接到Aggregate转换和Group by CustomerId并执行最低分数。现在将聚合转换的输出连接回Output2,在映射图中使用合并连接Output2.CustomerId = Aggregate Transform.Score和Output2.CustomerId = Aggregate Transform.Score。这样做可以解决问题,但是如果您有多个具有相同分数的customerId,那么在此步骤之后您可能需要排序以删除重复项。希望这可以帮助。
答案 2 :(得分:0)