我试图在交叉过滤器中创建一个运行总和以用于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/