Crossfilter:绕过其他尺寸的滤镜

时间:2014-11-19 10:09:45

标签: crossfilter

我在Crossfilter中使用多个维度(例如维度日期,类别,状态)。这一切都按预期工作,但我也希望有一个id-Dimension来快速检索单个数据对象。

问题是:

如果我过滤idDimension.filter(myId),同时应用其他过滤器(过滤掉id = myId的对象),则crossfilter将找不到给定的数据对象。 (之后我重置了idDimension.filter(null))。

有没有办法绕过所有其他过滤器进行单个跨过滤器查询?或者应该有一种方法来保存和恢复当前的过滤器。

1 个答案:

答案 0 :(得分:0)

在唯一值维度上执行过滤以便检索单个记录在Crossfilter中效率非常低。这样做会删除除所有组中的单个记录之外的所有记录,然后在删除过滤器时将它们全部添加回来。这意味着您的组聚合加法和减法函数将在每个记录上运行两次,实际上完全没有任何理由。

这取决于您的确切需求,但我认为更好的选择是将所有记录的数组保存在Crossfilter之外的ID属性上,并使用crossfilter.bisect查找记录,或者创建一个地图所有记录键入唯一ID(如果您的浏览器支持,请使用ES6 Map,或使用d3.map等替代实现)并使用Map.prototype.get()查找记录。换句话说,不要使用Crossfilter