2013-05-09 98 views
3

我已经通过Crossfilter API文档多次阅读,但无法看到如何执行以下操作。Crossfilter中已过滤尺寸的大小?

想我已经设置了

crossfilter(event); 

和维富:

var foo = event.dimension(function(d) { return d.foo; }), 
foos = foo.group(function(d) { return Math.floor(d) ; }); 

然后,应用任何过滤器之前,event.size()会给我的记录数的事件,foos.size()将给我在foo维度的不同记录的数量

太棒了!现在我通过滑动刷子应用一些过滤器。 event.groupAll().value()现在给我选择的事件中的当前记录数。再次伟大。

现在我该如何获取foo维度中不同记录的当前数量?我已经尝试了API原语的许多不同组合,但似乎没有任何工作。

任何想法?

回答

7

这应该做的伎俩

var n = foo.top(Number.POSITIVE_INFINITY).length; 
0

我没有足够的信誉评论由雷诺提出的解决方案。

这应该做的伎俩

var n = foo.top(Number.POSITIVE_INFINITY).length;

这种解决方案的问题是效率不高,因为顶部功能订货数据。

我有同样的问题,你我在过滤器中有一个计数器,以知道有多少条目具有维度。

+0

crossfilter总是保持数据的排序索引,这就是它如何有效地应用过滤器/组,所以'top'和'bottom'不适用于排序,但它们必须遍历所有数据一次,所以你仍然得到O(n)操作而不是O(1)。 – Mortimer 2015-06-23 20:28:03