Crossfilter 简介(Introduction to Crossfilter)
Crossfilter是一个多维数据集。 它支持与包含一百万或更多记录的数据集进行极快速的交互。
基本概念
Crossfilter在crossfilter命名空间下定义。 它使用语义版本控制。 考虑一个crossfilter对象,它载有以下定义的水果集合 -
var fruits = crossfilter ([
{ name: “Apple”, type: “fruit”, count: 20 },
{ name: “Orange”, type: "fruit”, count: 10 },
{ name: “Grapes”, type: “fruit”, count: 50 },
{ name: “Mango”, type: “fruit”, count: 40 }
]);
如果我们需要在一个组中执行总记录,我们可以使用以下函数 -
var count = fruits.groupAll().reduceCount().value();
如果我们想按特定类型过滤 -
var filtering = fruits.dimension(function(d) { return d.type; });
filtering.filter(“Grapes”)
同样,我们可以使用Crossfilter进行分组。 为此,我们可以使用以下功能 -
var grouping = filtering.group().reduceCount();
var first = grouping.top(2);
因此,Crossfilter的构建非常快。 如果要在应用过滤器时重新计算组,则会逐步计算。 Crossfilter尺寸非常昂贵。
Crossfilter API
让我们详细介绍一下着名的Crossfilter API。
crossfilter([records]) - 用于构造新的crossfilter。 如果指定了记录,则它同时添加指定的记录。 记录可以是任何JavaScript对象或基元的数组。
crossfilter.add(records) - 将指定的记录添加到crossfilter。
crossfilter.remove() - 从交叉过滤器中删除与当前过滤器匹配的所有记录。
crossfilter.size() - 返回交叉过滤器中的记录数。
crossfilter.groupAll() - 它是一个用于对所有记录进行分组并减少为单个值的函数。
crossfilter.dimension(value) - 用于使用指定的值访问器函数构造新维度。
dimension.filter(value) - 用于过滤维度匹配值的记录,并返回维度。
dimension.filterRange(range) - 过滤尺寸值大于或等于范围[0]且小于范围[1]的记录。
dimension.filterAll() - 清除此维度上的所有过滤器。
dimension.top(k) - 用于根据此维度的自然顺序返回包含前k个记录的新数组。
dimension.bottom(k) - 用于根据此维度的自然顺序返回包含底部k记录的新数组。
dimension.dispose() - 用于从交叉过滤器中删除维度。
在下一章中,我们将简要了解D3.js.