Quando si utilizza Crossfilter (https://github.com/square/crossfilter), si specificano le funzioni da utilizzare quando si aggiungono e si rimuovono i dati da un gruppo. E 'abbastanza banale per tenere traccia di una media in esecuzione (utilizzando CoffeeScript):Utilizzando Crossfilter, è possibile tenere traccia di max/min durante il raggruppamento?
reduceAdd = (p, v) ->
++p.count;
p.sum += v.digit;
p
reduceRemove = (p, v) ->
--p.count;
p.sum -= v.digit;
p
reduceInitial = ->
{
count: 0
sum: 0
average: ->
return 0 if this.count == 0
return this.sum/this.count
}
E' possibile tenere traccia del massimo e minimo di ogni gruppo? Non riesco a capire un modo per non tenere tutti gli elementi in un enorme array e fare un d3.min/d3.max. Sembra che aggiungere/rimuovere dati sarebbe estremamente inefficiente.
Ho anche cercato un modo per dire a Crossfilter di ricostruire completamente il gruppo da zero, piuttosto che rimuovere elementi da un gruppo esistente. Se viene applicato un filtro, il gruppo viene ripristinato e ricostruito. Niente di ovvio.
appena incontrato lo stesso problema. A proposito, ho aperto un problema in github, https://github.com/square/crossfilter/issues/25 – CambridgeMike