Размер отфильтрованного размера в Crossfilter?

Я читал несколько документов API Crossfilter несколько раз, но не вижу, как это сделать.

Предположим, что я установил

crossfilter(event);

и размерность foo:

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-примитивов, но никто не работает.

Любые идеи?

2 ответа

Это должно сделать трюк

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


У меня недостаточно репутации, чтобы прокомментировать решение, предложенное Рено.

Это должно сделать трюк

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

Проблема этого решения заключается в том, что он неэффективен, потому что верхняя функция упорядочивает данные.

У меня та же проблема, что и у вас и у меня есть счетчик в фильтре, чтобы узнать, сколько записей имеет размер.

licensed under cc by-sa 3.0 with attribution.