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/

相关文章:

javascript - DC.js双分组

javascript - dc.js 图表中的多个画笔

javascript - 过滤后的交叉过滤器维度与按过滤属性定义维度

javascript - dc.js - 选择 csv 中的列来渲染图表

javascript - 如何反转 SVG 文本路径以使文本不会颠倒?

javascript - 使用 IONIC 在 IOS 上没有网络连接功能问题

javascript - 如何使用 javascript 或 jquery 以表格格式显示 JSON 对象?

javascript - 是什么导致在 Angular/D3.js 中重复绘制这条线?

javascript - 应用过滤器时 DC.js 复合图表不更新

javascript - d3 和 crossfilter js 出错