2

如何为 SSIS 中的每个重复行仅获取一条记录?

我通过以下方式知道它在 Informatica 中的工作原理:

  • 聚合器转换
  • 按一列分组
  • 选择任何其他列的 MAX

但我不知道如何在 SSIS 中做到这一点。

4

3 回答 3

3

a 中的Aggregate组件Data Flow Task可能是您正在寻找的。如果您从数据库中采购,通常我发现创建一个查询以仅提取唯一数据开始时更好。它可以节省周围的资源并且性能更好。

于 2018-12-03T20:59:00.593 回答
0

你可以使用这个代码

WITH resultTable AS (
SELECT 
RT.*,
LT.MID
FROM MyTable RT
Inner JOIN 
(
  SELECT SEQ,Max(ID) as MID
  FROM MyTable
 GROUP BY SEQ
) LT ON RT.SEQ = LT.SEQ AND RT.ID = LT.MID)
select resultTable.* from resultTable

或按一定顺序排列行并取第一行,我在下面给出的示例

WITH resultTable AS (
SELECT 
RT.*,  
ROW_NUMBER() OVER ( PARTITION BY RT.[ColumnForGroupBy] 
                         ORDER BY RT.ID DESC ) AS [ROW NUMBER]
FROM MyTable RT
Inner JOIN 
(
  SELECT [ColumnForGroupBy]
  FROM MyTable
 GROUP BY [ColumnForGroupBy]
) LT ON RT.[ColumnForGroupBy] = LT.[ColumnForGroupBy])
select resultTable.* from resultTable
WHERE resultTable.[ROW NUMBER] = 1
于 2021-02-18T07:57:33.293 回答
0

除了 billinkc 提到的之外,ROW_NUMBER() OVER (PARTITION BY <ID> ORDER BY <ID>如果您使用的是 SQL-Server/Oracle,您可以通过介绍来解决它。这将按 ID 为唯一行生成 1,为重复项生成增量值。

接下来,使用WHERE condition = 1ORConditional Split在 SSIS 转换中使用条件过滤源 SQL row = 1

根据问题陈述修改您的分区和排序。

于 2018-12-04T06:04:10.137 回答