2013-05-09 108 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