我试图在交叉过滤器中创建一个运行总和以用于dc.js。
我有一组类似以下的记录:

records = [{"date":"2014-01-01","field1":"value1","field2":"value11","value_field":-20},
           {"date":"2014-01-02","field1":"value2","field2":"value12","value_field":100},
           {"date":"2014-01-03","field1":"value1","field2":"value11","value_field":-10},
           {"date":"2014-01-04","field1":"value2","field2":"value12","value_field":150},
           ]

到目前为止,我已经创建了一个barGraph,它可以与其他维度很好地配合,但是我希望能够显示理论字段runnning_total的折线图(以及维度日期)。

在交叉过滤器中完成该操作将使我能够使用fieldx字段进行分组,并轻松获得相同的运行总图,但使用dc.js限制为值的子组。

欢迎任何帮助。

最佳答案

好吧,我知道操作人员已经构建了解决方案,但是经过一段时间的努力,我才能够破解它,所以如果有人搜索它,可以将其发布在这里。

对以下项使用累积值:https://groups.google.com/forum/#!topic/dc-js-user-group/W9AvkP_dZ0U

运行总和:

var _group   = dim.group().reduceSum(function(d) {return 1;});

var group = {
all:function () {
 var cumulate = 0;
 var g = [];
 _group.all().forEach(function(d,i) {
   cumulate += d.value;
   g.push({key:d.key,value:cumulate})
 });
 return g;
}

};

对于过去十二个月的计算:
var _group   = dateDim.group().reduceSum(function(d) {return d.revenue;});
var group = {
all:function () {
var g = [];
_group.all().forEach(function(d,i) {
    var cumulate = 0;
    var monthcount =0;
    var dt =new Date( d.key);
    var ct =  new Date(d.key);
    ct.setFullYear(ct.getUTCFullYear() -1);
    _group.all().forEach(function(d2,i) {
        var dt2 = new Date(d2.key);
        if(dt2 <= dt && dt2 > ct){
            cumulate += d2.value;
            monthcount++;
        }
    })
    if(monthcount>=11){
        console.log( ' Dt ' + dt + ' ' + cumulate + ' months ' + monthcount);
        g.push({key:d.key,value:cumulate})
        }
    });
                return g;
            }
        };

关于sum - 在dc.js中创建运行总和图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21698843/

10-08 22:14