【发布时间】:2015-06-01 19:54:49
【问题描述】:
我试图弄清楚如何将过滤器添加到与维度过滤器无关的交叉过滤器组中。我们来看一个例子:
var livingThings = crossfilter({
// Fact data.
{ name: “Rusty”, type: “human”, legs: 2 },
{ name: “Alex”, type: “human”, legs: 2 },
{ name: “Lassie”, type: “dog”, legs: 4 },
{ name: “Spot”, type: “dog”, legs: 4 },
{ name: “Polly”, type: “bird”, legs: 2 },
{ name: “Fiona”, type: “plant”, legs: 0 }
}); //taken from http://blog.rusty.io/2012/09/17/crossfilter-tutorial/
如果我们要在类型上创建一个维度以及该维度的一组:
var typeDim = livingThings.dimension(function(d){return d.type});
var typeGroup = typeDim.group();
我们希望 typeGroup.top(Infinity) 输出
{{human:2},
{dog:2},
{bird:1},
{plant:1}}
我的问题是我们如何过滤数据,使它们在这个分组中只包含 4 条腿的生物?我也不想使用 dimension.filter... 因为我不希望这个过滤器是全局的,只是为了这个分组。换句话说
var filterDim = livingThings.dimension(function(d){return d.legs}).filterExact(4);
不允许。
我正在考虑类似于我在https://stackoverflow.com/a/30467216/4624663 中对后过滤尺寸所做的事情 基本上我想进入 typeDim 维度的内部,并在数据传递到组之前对其进行过滤。创建一个调用 typeDim.group().top() 的假组很可能不起作用,因为各个 livingThings 记录已经按该点分组。我知道这很棘手:感谢您的帮助。
V
【问题讨论】:
标签: grouping crossfilter