dc.js 忽略今天之后的结果

dc.js ignore results later than today

在 DC.JS 中,我有一个 A 减去 B 的前 10 个方差的行图,其中 dim/group:

.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

这在 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-