Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis SSI从数据流中的聚合中获取前N个记录_Ssis_Aggregate - Fatal编程技术网

Ssis SSI从数据流中的聚合中获取前N个记录

Ssis SSI从数据流中的聚合中获取前N个记录,ssis,aggregate,Ssis,Aggregate,我有一个数据流,其中我使用聚合控件对记录进行分组。 每个组都有一个类别和一个记录计数 现在,我只想将排名前10位的类别存储在数据库中 除了在纸条组件中循环它们并将它们插入表格之外,还有另一种方法可以做到这一点,即通过一个占据前10名的组件。类似于百分比采样。您可以在聚合转换之后使用排序转换。之后,使用行采样转换获得前N行 更新: 如果不使用行采样转换'。只需将此转换替换为“脚本转换”。我们可以在其中生成行数。之后,我们可以使用条件行数的条件拆分转换,我会将聚合数据转储到一个表中,并使用T-SQL

我有一个数据流,其中我使用聚合控件对记录进行分组。 每个组都有一个类别和一个记录计数

现在,我只想将排名前10位的类别存储在数据库中


除了在纸条组件中循环它们并将它们插入表格之外,还有另一种方法可以做到这一点,即通过一个占据前10名的组件。类似于百分比采样。

您可以在
聚合转换之后使用
排序转换
。之后,使用
行采样转换
获得前N行

更新:


如果不使用行采样转换'。只需将此转换替换为“脚本转换”。我们可以在其中生成行数。之后,我们可以使用条件行数的条件拆分转换,我会将聚合数据转储到一个表中,并使用T-SQL RANK()获得前10行。

sampling似乎会随机选择前10行。即使使用随机种子选项,也不会选中。数据查看器显示,当数据点击采样控件时,数据是正确的,并且顺序正确,但随后它选择了10条随机记录。我确实使用了转换脚本,但最终创建了读取前10行数据并将其通过缓冲区的代码。一旦有10条记录通过,就没有更多的记录进入输出缓冲区,因此只有10条记录从另一端出来。但是谢谢你的帮助。你删除行采样转换了吗?是的。我做了一个聚合,然后选择它创建的前10个排序值,然后传递给脚本。
//variable to store row number   
private int counter


//Add this method, which is automatically called once.
public void New()
{
    counter = 0;
}

//Edit the following to increment the counter
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    counter += 1;

    Row.RowNumber = counter;

}