gpt4 book ai didi

crossfilter - 如何从减少中过滤空组?

转载 作者:行者123 更新时间:2023-12-04 14:59:09 26 4
gpt4 key购买 nike

在我看来,Crossfilter 永远不会从减少结果中排除一个组,即使应用的过滤器已经排除了该组中的所有行。过滤掉所有行的组只返回聚合值 0(或任何 reduceInitial 返回的值)。

这样做的问题是,无法区分不包含行的组和包含行但仅合法聚合为 0 值的组。基本上,没有办法(我可以看到)区分空值值和 0 聚合。

有人知道实现这一目标的内置交叉过滤技术吗?我确实想出了一种方法来使用我自己的自定义 reduceInitial/reduceAdd/reduceRemove方法,但它并不完全直接,在我看来,这种行为可能/应该更符合 Crossfilter 的过滤语义。所以我想知道是否有一种规范的方法来实现这一点。

如果事实证明没有内置的方法可以做到这一点,我会将我的技术作为答案发布。

最佳答案

实现此目的的一种简单方法是将 count 和 total 都归为 reduce 属性:

var dimGroup = dim.group().reduce(reduceAdd, reduceRemove, reduceInitial);

function reduceAdd(p, v) {
++p.count;
p.total += v.value;
return p;
}

function reduceRemove(p, v) {
--p.count;
p.total -= v.value;
return p;
}

function reduceInitial() {
return {count: 0, total: 0};
}

空组的计数为零,因此仅检索非空组很容易:
dimGroup.top(Infinity).filter(function(d) { return d.value.count > 0; });

关于crossfilter - 如何从减少中过滤空组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com