SSIS - 字符串列的最大和最大值

时间:2016-05-03 09:28:58

标签: database ssis group-by etl

我在SSIS中有三列来自数据库。

价格 数 标题

我希望GROUP BY by" Price"和"数字"。问题是,有些行具有相同的数字但标题不同。所以我想拥有最高标题。

在像Pentaho或OWB这样的其他ETL工具中,它可以工作。有些功能我可以按价格和编号进行GROUP BY,并获得标题的最大值。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您是否看过Aggregate转型?

或者,您可以在源SQL中执行此操作,其优点是数据库引擎将对其进行处理(SSIS聚合转换正在阻塞,因此它会在将所有行加载到内存之前将其加载到内存中)。 / p>

更新:如果在原始SQL中预先聚合(在进入SSIS之前)不是一个选项,您可以为标题添加代理键:

SELECT
Price,Number,Title,ROW_NUMBER() OVER
(PARTITION BY Price,Number ORDER BY Title ) AS TitleOrdinal
FROM ...

然后您的SSIS Aggregate可以使用MAX(TitleOrdinal)(这是一个数字列)作为MAX(标题)的代理。

要获得实际的MAX(标题),您必须将原始数据集加入此聚合集,价格= Price,Number = Number,TitleOrdinal = [MAX(TitleOrdinal)来自聚合集合。)