crossfilter2 维度过滤器未按预期工作

时间:2021-06-28 08:44:14

标签: javascript crossfilter

const crossfilter = require( 'crossfilter2');
const _ = require('lodash')
function randomGaussian() {
  return (
    Math.sqrt(-2 * Math.log(Math.random())) *
    Math.cos(2 * Math.PI * Math.random())
  );
}

const data = _.range(256).map(i => {
    // console.log(i, " -- ", randomGaussian() + 8);
    return [i, randomGaussian() + 8];
  });
    const filter = crossfilter(data);
    const value1 = filter.dimension(d => d[1]);
  const valueGroup = value1.group().reduceSum(d => d[1]);

value1.filter([7.2,8.1])
console.log(value1.top(Infinity).length)
console.log(valueGroup.all().filter(d => d.value ).length)

我希望组长度与维度长度相同... 知道我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

根据文档发现维度过滤器不适用于组。

" 注意:分组与交叉过滤器的当前过滤器相交,关联维度的过滤器除外。因此,组方法只考虑满足除此维度过滤器之外的所有过滤器的记录。所以,如果支付的交叉过滤器是按类型和总数过滤的,那么 groupAll by total 只观察按类型过滤。"