Crossfilter组过滤维度

时间:2015-10-13 11:53:56

标签: javascript d3.js crossfilter

创建新维度后(按日期,javascript的日期对象)。

var byDate = cf.dimension(function (d) { return d.date; });

我过滤维度以删除所有数据,其日期早于我选择的任意日期。

var filteredDim = byDate.filterFunction(function (d) { return d >= startDate; });

此行打印通过过滤的所有对象的数组。 (正常工作)

console.log(filteredDim.top(Infinity));

此行打印一组键值对象。 我希望键只是那些通过过滤器的键,这意味着在提供给过滤器功能的任意选择日期之后发生的日期。 实际上,数组包含所有日期的键(未过滤的),它们的值是原始值,就像根本没有过滤一样。

console.log(filteredDim.group(d3.time.day).top(Infinity));

我想知道如何对已过滤的维度进行分组并仅对过滤后的值进行分组?

由于

更新 事实证明,这种行为在设计上是正常的。 有人可以提出解决方法吗?

2 个答案:

答案 0 :(得分:3)

Crossfilter组尊重所有过滤器,但定义它们的维度。在不同的维度上定义您的论坛,它将按照您的预期进行过滤。

https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_group

答案 1 :(得分:0)

我知道这篇文章过时了,但是我的解决方案可能会对某人有所帮助。

就像伊桑(Ethan)所说的:

  

组尊重所有过滤器,但过滤器所在的维度除外   被定义。

作为一种解决方法,您可以简单地根据要分组的维度创建一个临时交叉过滤器。

在上面的示例中,它将类似于:

tempCrossfilter = crossFilter(filteredDim.top(Infinity))

tempDimension = tempCrossfilter.dimension(function (d) { return d.date; });

filteredGroup = tempDimension.group(d3.time.day).top(Infinity)