2016-07-26 29 views
0

我嘗試使用reductio的post()。帽功能時遇到問題。我的數據集就像這樣。Crossfilter還原郵帽

[{foo: 'one', bar: 'B', hits:10}, 
{foo: 'one', bar: 'B', hits:20}, 
{foo: 'two', bar: 'B', hits:50}, 
{foo: 'two', bar: 'B', hits:100}, 
{foo: 'one', bar: 'A', hits:150}.........] 

我所尋找的是

[key: 'B', value:{count=4, sum=180}, 
key: 'A', value:{count=1, sum=150}, 
key: 'others', value:{count=7, sum=60}] 

我有一個富暗淡設置爲

var barDim = ndx.dimension(function(d){ return d.bar; }); 
var barGroup = reductio().count(true).sum('hits')(barDim.group()); 

提前感謝!

reductio cap functionality

+0

什麼'console.log(fooGroup.post()。cap(3)()'顯示你? –

+0

此外,對於這組密鑰,我想你想要定義'而不是'foo',但我認爲這只是基於示例數據的一個錯誤:-) –

+0

它沒有以正確的順序顯示我。它是基於自然秩序的上限。我想通過減少總和值來公佈結果。是的,關鍵應該是'酒吧'。這是一個錯誤。 :) – bashhike

回答

1

評論跟帖中不幸的是上面我是不是用歸謬法post API非常熟悉,因爲我不使用它自己。它目前不尊重組織排序,但它確實提供了自己的API來控制訂單。例如:

group.post().sortBy('value.sum', d3.descending).cap(3)() 

注意,排序函數這裏是d3.descending,這是可用的,如果你正在使用D3.js.否則,您可以使用任何具有類似API的排序功能。

我還注意到,sortBy API沒有記錄。我會盡力做到這一點,以便其他人可以發現它。 (#)(#)

+0

感謝Ethan。這是有效的。我打算使用郵件帽,因爲'其他'聚合。直到現在我是在過濾器中使用了沒有提供的假組別;其他人可能會這樣做,但它需要一些編碼,畢竟,我想把它傳遞給dc.js圖表​​,但是我得到了a.group.all不是一個函數,所以我已經提前創建了一個假羣組 – bashhike

+0

是的,你可以根據'group.post()的結果創建一個假羣組。sortBy .... cap(3)'應該工作。:-)乾杯。 –