我有一个数据流,我使用聚合控件对记录进行分组。 每个组都有一个类别和记录计数。
现在id就像采用前10个最高计数的类别并将它们存储在数据库中。
除了在脚本组件中循环它们并将它们插入到表中之外还有另一种方法可以实现这一点..通过一个抓住前10个的组件,比如百分比采样。
答案 0 :(得分:1)
您可以在Sort transformation
之后使用aggregate transformation
。之后使用Row Sampling transformation
获取前N行。
<强> 更新 强>
如果它不能使用行采样转换'。用“脚本转换”替换这个转换。我们可以在其中生成RowNumber。之后,我们可以使用条件RowNumber <= 10的条件分裂变换。这样我们就可以过滤行了。
步骤:
Script component
并将其选为“transformation
”RowNumber
。Conditional Split transformation
并具有类似RowNumber&lt; = 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;
}
希望它有所帮助!
答案 1 :(得分:0)
我将汇总数据转储到表格&amp;使用T-SQL RANK()获得前10名。