2016-07-26 11 views
0

Ich habe Probleme, reductios post(). Cap-Funktionalität zu verwenden. Mein Datensatz ist so.Crossfilter reductio post cap

[{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}.........] 

Was ich suche ist

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

ich als

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

Vielen Dank im Voraus!

reductio cap functionality

+0

Was zeigt 'console.log (fooGroup.post(). Cap (3)()' Ihnen? –

+0

Auch für diesen Gruppenschlüssel würde ich denken, dass Sie eine Dimension auf 'bar' definieren möchten eher als 'foo', aber ich nehme an, das ist nur ein Fehler basierend auf Beispieldaten :-) –

+0

Es zeigt mir nicht in der richtigen Reihenfolge. Es ist begrenzt auf natürliche Reihenfolge. Ich möchte das Ergebnis nach unten verkappen, indem ich die Summenwerte absenke. Ja, der Schlüssel sollte 'bar' sein. Das ist ein Fehler. :) – bashhike

Antwort

1

im Kommentarthread Leider oben war ich mit dem Reductio post API nicht vertraut genug, wie ich es nicht selbst verwenden. Derzeit wird die Gruppenreihenfolge nicht berücksichtigt, es wird jedoch eine eigene API zum Steuern der Reihenfolge bereitgestellt. Zum Beispiel:

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

Beachten Sie, dass die Reihenfolge hier Funktion ist d3.descending, die, wenn Sie D3.js. verwenden verfügbar ist Andernfalls können Sie eine beliebige Bestellfunktion mit einer ähnlichen API verwenden.

Ich stelle auch fest, dass die.API nicht dokumentiert ist. Ich werde versuchen, dies zu tun, damit andere es entdecken können.

+0

Danke Ethan. Das funktioniert. Ich wollte die Post-Kappe wegen der "anderen" Aggregation verwenden. Bis jetzt war ich mit gefälschten Gruppen im Crossfilter, die nicht zur Verfügung stellen, andere ". Wahrscheinlich wäre es aber es würde ein bisschen Codierung erfordern. Sowieso würde ich dies nach dc.js Diagramm übergeben. Allerdings bekomme ich a.group.all ist keine Funktion. Also habe ich eine falsche Gruppe erstellt. – bashhike

+0

Yup, Sie können eine falsche Gruppe basierend auf dem Ergebnis von 'group.post(). sortBy .... cap (3)' und es erstellen sollte funktionieren. :-) Prost. –