javascript - DC.JS Crossfilter - 添加运行累计和

标签 javascript dc.js crossfilter

我已经为投资组合的损益定义了一个表。对于每一天,损益都显示在适当的 DC 条形图中,但我想在列日期之后添加一个累计总和。这应该在示例中为 9 月末返回 9 月的损益切片,为 10 月返回 9 月和 10 月的切片等等。如果在交叉过滤器中应用任何过滤器,则应用的累积和应应用于过滤后的数据。

*

Date,Cpty,internalRating,ratingSegment,externalRating,Sector,assetClass,riskFactor,riskBucket,sensi,marketMove,PL
30.09.16,DEF,2A,IND,AA,Industrials,IR,EUR,10,-1000,2,-2000
30.09.16,JKL,3B,SERV,BBB,Services,IR,USD,10,-1000,4,-4000
30.09.16,JKL,3B,SERV,BBB,Services,IR,JPY,10,-10000,6,-60000
30.09.16,JKL,3B,SERV,BBB,Services,CS,CDS_JKL,10,-4000,4,-16000
30.09.16,MNO,2B,TRAN,BB,Transportations,IR,EUR,10,1000,-4,-4000
30.09.16,MNO,2B,TRAN,BB,Transportations,CS,CDS_MNO,10,-1000,5,-5000
31.10.16,DEF,2A,IND,AA,Industrials,IR,EUR,10,-1500,6,-9000
31.10.16,JKL,3B,SERV,BBB,Services,IR,USD,10,1500,12,18000
31.10.16,JKL,3B,SERV,BBB,Services,IR,JPY,10,15000,18,270000
31.10.16,JKL,3B,SERV,BBB,Services,CS,CDS_JKL,10,6000,12,72000
31.10.16,MNO,2B,TRAN,BB,Transportations,IR,EUR,10,-1500,-12,18000
31.10.16,MNO,2B,TRAN,BB,Transportations,CS,CDS_MNO,10,1500,15,22500
30.11.16,DEF,2A,IND,AA,Industrials,IR,EUR,10,1428,6,8568
30.11.16,JKL,3B,SERV,BBB,Services,IR,USD,10,1085,12,13020
30.11.16,JKL,3B,SERV,BBB,Services,IR,JPY,10,5046,18,90828
30.11.16,JKL,3B,SERV,BBB,Services,CS,CDS_JKL,10,2579,12,30948
30.11.16,MNO,2B,TRAN,BB,Transportations,IR,EUR,10,-253,-12,3036
30.11.16,MNO,2B,TRAN,BB,Transportations,CS,CDS_MNO,10,409,15,6135

*

有什么线索可以继续吗?为此我需要还原吗? 提前致谢!

最佳答案

作为@Ethan 聪明答案的替代方案,这也是“假组”的绝佳机会(也是 IIRC 最早记录的该技术的用途之一)。

来自 the dc.js FAQ :

function accumulate_group(source_group) {
    return {
        all:function () {
            var cumulate = 0;
            return source_group.all().map(function(d) {
                cumulate += d.value;
                return {key:d.key, value:cumulate};
            });
        }
    };
}

像这样使用它:

data.forEach(function(r) {
    r.Date = dateFormat.parse(r.Date);
});
var cf = crossfilter(data)
var dateDim = cf.dimension(function(d) { return d.Date; });
var plGroup = dateDim.sum(function(d) { return d.PL; });
var accumPLGroup = accumulate_group(plGroup);

关于javascript - DC.JS Crossfilter - 添加运行累计和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619760/

相关文章:

dc.js - crossfilter + dc.js//维度组相互包含

javascript - d3.js 不读取 JSON (d3.js + dc.js + crossfilter)

javascript - 关于在浏览器中编辑 XML 的最佳方法的建议

javascript - 使用页面对象支持的 Protractor 测试多个浏览器

javascript - React 生命周期方法,是否为 componentWillReceiveProps

javascript - Crossfilter过滤器不过滤(dc.js)

d3.js - 如何避免弹性或弹性时出现截断气泡

javascript - highcharts 下载/导出带有圆形边框的图像

javascript - dc.js 数据表中的唯一项目

d3.js - 大型数据集使我的浏览器崩溃