Javascript 用交叉滤波器过滤的挡板

Javascript 用交叉滤波器过滤的挡板,javascript,crossfilter,Javascript,Crossfilter,我一直试图理解交叉过滤器过滤,最终我能够在代码中正确地理解它,但我似乎不明白为什么交叉过滤器会这样做 下面是我从这里得到的: 正如Jeffrey Biles在文章中所说的那样,交叉过滤器并没有将过滤器应用到你设置过滤器的维度上。它适用于其他一切 好吧,我不明白为什么会这样做,但好吧,过滤器适用于所有其他东西,明白了 但后来我发现: 在这里,rbristow使用一个文本过滤框来过滤他的代码。但是过滤他的公司维度。这似乎也是被过滤的维度 所以。。。我有两个问题: 为什么CrossFilter会将其应

我一直试图理解交叉过滤器过滤,最终我能够在代码中正确地理解它,但我似乎不明白为什么交叉过滤器会这样做

下面是我从这里得到的:

正如Jeffrey Biles在文章中所说的那样,交叉过滤器并没有将过滤器应用到你设置过滤器的维度上。它适用于其他一切

好吧,我不明白为什么会这样做,但好吧,过滤器适用于所有其他东西,明白了

但后来我发现:

在这里,rbristow使用一个文本过滤框来过滤他的代码。但是过滤他的公司维度。这似乎也是被过滤的维度

所以。。。我有两个问题:

为什么CrossFilter会将其应用于除您调用它的维度之外的所有维度? 如果是这样的话,为什么rbristow的代码可以工作?
提前谢谢你

在Crossfilter中,您可以查询维度(如dimension.top10)或组(如group.all或group.top10)。对维度的查询将按维度的顺序返回原始数据记录,并且它们将考虑交叉过滤器上的所有过滤器(如果有)。对组的查询返回您的组聚合,并在交叉筛选器上使用相应的筛选器

这种设计的原因是,您将使用组查询的结果来构建交互式类型的图表,也就是用户将筛选的图表,因为我们希望绘制聚合值。当用户在图表上进行筛选时,您确实不希望该图表发生更改。对于用户来说,数据应该保持静止。基于在其他维度上定义的组的所有其他图表都应更改。所以这就是为什么团队忽略了他们自己维度上的过滤器


您引用的dataTable示例的工作原因如下:dc.js通常使用传递给它的组来使用group.top或group.all方法构建图表以获取数据,这会忽略该组维度上的过滤器。传递给图表的维度通常仅用于应用该图表中的筛选器。它通常不必是同一图表中定义组的维度。dc.js数据表是不同的。它使用维度来获取所需的数据。因此,如上所述,dataTable将向您显示有关交叉过滤器上所有过滤器的数据,包括dataTable中使用的维度上的任何过滤器。

非常感谢Ethan为我清除了这些过滤器!