SSIS 数据流中的排名/行号函数

问题描述 投票:0回答:3
在我的数据流中,经过一些查找后,我会根据客户的某些属性(例如城市、位置)获得重复的客户记录(它们不是完全重复,只是客户 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中的数据流过程中

sql ssis rownum
3个回答
3
投票
在 SQL 命令上执行源的数据访问模式。

enter image description here


2
投票
使用 MultiCast 将其分成两个输出 - 例如 Output1 和 Output2。输出之一连接到聚合转换并按 CustomerId 分组并执行最低分数。现在使用映射映射中的 Merge Join 将聚合转换的输出连接回 Output2:

    Output2.CustomerId = 聚合 Transform.CustomerId 和
  • Output2.Score = 聚合 Transform.Score
这可以解决问题,但如果您有多个具有相同分数的 CustomerId: 那么您可能需要在此步骤之后进行排序以删除重复项。


0
投票
这是帮助我解决问题的解决方案

http://paultebraak.wordpress.com/2013/02/25/rank-partitioning-in-etl-using-ssis/

© www.soinside.com 2019 - 2024. All rights reserved.