dc.js会比今天晚些时候忽略结果

时间:2016-05-19 15:17:09

标签: dc.js

在DC.JS中,我有一个排名前10的方差A-minus B与下面的昏暗/组:

.dimension(dateDim)
.group(grp)

相关变量是:

var dateDim = ndx.dimension(function (d) { return d.DATE; });
var dateFormat = d3.time.format("%d/%m/%Y");

对于小组来说,这很好用:

var grp= dateDim.group().reduceSum(function(d) {return Math.abs(d.A - d.B);});

但是,我想做的只是展示截至今天的商品。

我尝试了下面的功能,但这不起作用。它可能只是语法。 任何想法?

var grp2= dateDim.group().reduceSum(function(d) {
if (dateDim > dateFormat(today))return dateDim; else return Math.abs(d.A- B.plan); 

谢谢,stutray

1 个答案:

答案 0 :(得分:1)

这在dc.js常见问题解答中解决:https://github.com/dc-js/dc.js/wiki/FAQ#how-do-i-filter-the-data-before-its-charted

所以...原来我说过上面的内容。但您实际想要做的是过滤掉与特定预定义过滤器不匹配的记录,以便它们不会聚合到此图表的组中?在这种情况下,您需要使用自定义过滤器功能,我建议使用Reductio等帮助程序库,它提供过滤功能。

var dAct = reductio().filter(function(d) {
    // Here `d` is the actual data record. Return a boolean by testing
    // d against your filter criteria. Return true to include the record and
    // false to exclude it.
    return d.STARTDATE !== "10\/Sep\/2016";
  })
  .sum(function(d) {return Math.abs(d.A - d.B);})(dateDim.group());

如果你使用Reductio,你还需要在你的图表中使用dc.js中的valueAccessor函数:

rChart
  ...
  .valueAccessor(function(d) { return d.value.sum; })

关于Codepen的更新示例:http://codepen.io/anon/pen/oxrPJv

文档:https://github.com/crossfilter/reductio#aggregations-standard-aggregations-reductio-b-filter-b-i-filterfn-i-