2017-07-19 91 views
0

我正在处理一个非常大的SSIS包,并进行了许多转换。SSIS聚合转换

我需要做的聚集体组的一个字段,还计算领域,

,我有被合计从组播来的问题。我试着从MULTICAST做一个SORT,然后是一个AGGREGATE,但是我失去了所有其他列,我需要它们。

我试着添加另一个来自MULTICAST的SORT,这样我就可以拥有所有的列,并将所有转换进入MERGE,但该程序包挂在来自MULTICAST的SORT上。

MULTICAST也被路由到一个条件分割,其中一个分割将有一个AGGREGATE分组一个字段,也计数字段,并将进入上述MERGE。

img

SORT 1按CUSTOMER ID排序,SORT 2按CUSTOMER ID_SYSTEM排序。

Aggregate 1将CUSTOMER_ID组计算并计数不同的CUSTOMER_ID和Aggregate 2组CUSTOMER ID_SYSTEM并计数不同的CUSTOMER_ID系统。

基本上我试图通过AGGREGATE来实现的是,如果第一个AGGREGATE中的COUNTS等于第二个AGGREGATE中的COUNTS,那么这些行将沿着与COUNTS不匹配的那些行分开的路径。

对于没有包需要很长时间处理的最佳方法,如果有任何建议,现在包不会超过SORTS。

回答

0

处理此问题的最快方法是将其发送到包含多播点索引的目标表,然后在存储过程中执行聚合和比较逻辑。然后,如果需要更多数据流处理,请使用该表作为源来启动新的数据流。

SSIS数据流中的排序和聚合总是会很慢,不建议用于很多行。没有什么可以做,但避免它。

+0

谢谢,你碰巧知道一个SSIS函数可以计算分组字段,如果两个字段的计数不相等,那么所有这些行将被路由到一个单独的目的地。 – danielsvic

+0

不,没有像SSIS中内置的那样。 –