user2367434
user2367434

Reputation: 111

Size of a filtered dimension in Crossfilter?

I've read through the Crossfilter API docs several times but can't see how to do the following.

Suppose I have set up

crossfilter(event);

and a dimension foo:

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

Then, before any filters are applied, event.size() will give me the number of records in the event, and foos.size() will give me the number of distinct records in the foo dimension

Great! Now I apply some filters by sliding brushes around. event.groupAll().value() now gives me the current number of records in event that are selected. Great again.

Now how do I get the current number of distinct records in the foo dimension? I've tried many different combinations of the API primitives, but none seem to work.

Any ideas?

Upvotes: 3

Views: 2740

Answers (2)

fhuertas
fhuertas

Reputation: 5503

I do not have enough reputation to comment the solution proposed by Reno.

This should do the trick

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

The problem of this solution is that is not efficient, because top function is ordering the data.

I have the same problem that you and I have a counter in the filter to know how many entries have the dimension.

Upvotes: 0

Renaud
Renaud

Reputation: 4680

This should do the trick

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

Upvotes: 7

Related Questions