2013-11-21 34 views
1

我对层叠很有新意。现在我知道如何使用级联来完成字数统计。接下来我想做一些Sum操作。例如,我有以下输入:级联求和操作

a b c 1000 
c d e 2000 
a s e 5000 

我想汇总最后一个字段。如果我只是选择该领域,并做COUNT它会给我这样的输出:

1000 1 
2000 1 
5000 1 

这不是我想要的!我要总结所有这些3个号码,并给它一个被称为“持续时间”,它看起来像名称:

duration 8000 

我可以命名这个领域被称为“持续时间”,但我不知道如何总结它本身并在输出到文件时将关键工作“持续时间”放在前面。

这是我试过的代码:

... // get duration Field 
// determine the word counts 
Pipe pipe = new Pipe("pipe", docPipe); 
pipe = new GroupBy(pipe, new Fields("duration")); 
pipe = new Every(pipe, Fields.ALL, new Count(), Fields.ALL); 

但它给了我错误的输出,我已经如上图所示。

也许我不应该使用计数,但我试过SumBy它仍然不起作用。谁能帮我?

+0

也许你不应该数,当你想总结? – isnot2bad

+0

你到目前为止尝试过什么?发布与您的问题相关的源代码! – isnot2bad

+0

什么是'管道',什么'GrouBy','Every','Fields'? – 2013-11-21 21:20:15

回答

1

由于您希望获得所有值的总和,即您只需要一个组,因此GroupBy的“fields”参数应为Fields.NONE。此外,由于您正在总结持续时间字段,因此您应该将该参数选择器设置为Every。下面的代码做你想要的:

pipe = new GroupBy(pipe, Fields.NONE); 
pipe = new Every(pipe, new Fields("duration"), new Sum(), Fields.ALL);