我有以下数据:
Store year earnings
A 2011 1000
A 2012 2000
A 2013 2000
A 2014 3000
B 2012 200
B 2012 300
B 2012 500
B 2014 3000
B 2015 4000
C 2013 2000
C 2013 200
C 2015 1200
C 2016 4000
我想要做的是使用dc.js获得每家商店和每年的累计总和 并将其显示在系列图表中。
每年每家商店的累计金额为
Store year earnings
A 2011 1000
A 2012 3000
A 2013 5000
A 2014 8000
B 2012 1000
B 2014 4000
B 2015 8000
C 2013 2200
C 2015 3400
C 2016 7400
我已经四处搜索,看到这可以针对一个简单的维度和小组这样做:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = 0;
return source_group.all().map(function(d) {
cumulate += d.value;
return {key:d.key, value:cumulate};
});
}
};
}
但是为了使用系列图表,我需要减少年份和商店,将两者都放入复合键。当我尝试将上述函数与系列图表一起使用时,所有商店都会发生累积,从而产生比预期更大的值。
如何使用与系列图表一起使用的累积总和?
答案 0 :(得分:2)
您的createCumulativeGroup
函数只会在商店中累积所有值。你需要让它按商店积累价值。这应该有效:
function createCumulativeGroup(source_group) {
return {
all:function () {
var cumulate = {};
return source_group.all().map(function(d) {
if(cumulate[d.key[0]]) {
cumulate[d.key[0]] += d.value;
} else {
cumulate[d.key[0]] = d.value;
}
return {key:d.key, value:cumulate[d.key[0]]};
});
}
};
}