dc.js: 多维过滤器
dc.js: multiple dimension filters
我是 dc.js 的新手。我正在尝试使用它按多种条件过滤我的数据集。我可以使用以下代码按一种条件(类型)进行过滤。
var psv = d3.dsvFormat("|");
var experiments = psv.parse("time|userId|type|version\n" + data);
var ndx = crossfilter(experiments);
var typeDim = ndx.dimension(function(d) { return d["type"]});
var result = typeDim.filter(targetType).top(GLOBAL.MAX_FEEDBACK_COUNT);
如何将另一个维度过滤条件应用于 result
?喜欢按 userId
过滤?
提前致谢。
一个常见的混淆原因:.filter
没有 return 过滤后的数据。它将过滤器应用于有状态的维度。然后 dimension.top()
和 group.all()
是从交叉过滤器检索原始数据和聚合数据的函数。
如果您想应用另一个过滤器,您通常会为此创建另一个维度,例如一个键入 userId
。然后 crossfilter 实例将在两个过滤器上进行过滤。
但请注意:交叉过滤器组(您通常在其中读取聚合数据)does not observe its own dimension's filters. Confusingly, dimension.top does observe this dimension's filter。
我是 dc.js 的新手。我正在尝试使用它按多种条件过滤我的数据集。我可以使用以下代码按一种条件(类型)进行过滤。
var psv = d3.dsvFormat("|");
var experiments = psv.parse("time|userId|type|version\n" + data);
var ndx = crossfilter(experiments);
var typeDim = ndx.dimension(function(d) { return d["type"]});
var result = typeDim.filter(targetType).top(GLOBAL.MAX_FEEDBACK_COUNT);
如何将另一个维度过滤条件应用于 result
?喜欢按 userId
过滤?
提前致谢。
一个常见的混淆原因:.filter
没有 return 过滤后的数据。它将过滤器应用于有状态的维度。然后 dimension.top()
和 group.all()
是从交叉过滤器检索原始数据和聚合数据的函数。
如果您想应用另一个过滤器,您通常会为此创建另一个维度,例如一个键入 userId
。然后 crossfilter 实例将在两个过滤器上进行过滤。
但请注意:交叉过滤器组(您通常在其中读取聚合数据)does not observe its own dimension's filters. Confusingly, dimension.top does observe this dimension's filter。