我一直在尝试理解交叉过滤器过滤,我终于能够在我的代码中正确地实现它,但我似乎不明白为什么crossfilter会这么做。
这就是我从这里得到的Crossfilter filters not filtering (dc.js)
正如Jeffrey在报告中所说的,“因此,交叉过滤器没有应用于您所安装的过滤器的维度,而是应用于其他所有方面。”
好吧,我不明白为什么要这样做,但好吧,过滤器适用于其他一切,明白了。
但后来我找到了这个Custom Text filter for DC.js dataTable
在这里,rbristow使用一个文本过滤框来过滤他的代码。但是过滤了他的companyDimension维度。这似乎也是被过滤的维度。
所以..。我有两个问题:
提前一吨谢谢!
发布于 2015-08-22 02:42:39
在交叉过滤器中,您可以查询维度(例如dimension.top(10))或组(例如group.all()或group.top(10))。维度上的查询以维度的顺序返回原始数据记录,如果有的话,它们尊重交叉筛选器 the filter on that dimension上的所有过滤器。对组的查询返回组聚合,并尊重交叉筛选器 the filter on the dimension the group is defined on上的筛选器。
进行此设计的原因是,您将使用组查询的结果构建交互式图表类型(即用户将筛选的图表),因为我们希望绘制聚合值。当用户对图表进行过滤时,您确实不希望该图表发生更改。对于用户,数据应该保持不变。所有其他图表(基于在其他维度上定义的组)都应该改变。所以这就是为什么群体忽略了他们自己维度上的过滤器。
您引用的dataTable示例工作的原因如下: dc.js通常使用传递给它的组来构建其图表,使用group.top或group.all方法获取数据,这会忽略该组维度上的筛选器。传递给图表的维度通常仅用于应用该图表中的筛选器。它通常是(虽然不一定是)同一图表中定义的组的维度。dc.js dataTable是不同的。它使用维度来获取所需的数据。正因为如此,如上所述,dataTable将显示尊重交叉过滤器上所有过滤器的数据,包括在dataTable中使用的维度上的任何过滤器。
https://stackoverflow.com/questions/32145059
复制相似问题