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/

相关文章:

d3.js - dc.js 带复选框的多选菜单

javascript - click事件仅在双击时有效,而不是单击时有效

javascript - 从静态类访问派生类属性

javascript - Angular watch 功能在 Safari 浏览器中不起作用

angular - 带有 Angular2+ 的 dc.js 图表

javascript - DC.JS散点图未过滤

javascript - dc.js x轴与日期重叠

javascript - Crossfilter 中的自定义计算聚合字段

javascript - 如何在同一页面的 PHP 代码中的 AJAX 回调中使用值?

crossfilter - 如何获取交叉过滤器维度的当前过滤器?