DC.js 交叉过滤器简介基础教程文档

收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體

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 的构建速度非常快。如果您想在应用过滤器时重新计算组,它将以增量方式计算。交叉过滤器维度非常昂贵。

交叉过滤器 API

让我们详细了解著名的 Crossfilter API。
crossfilter([records])-用于构建新的交叉过滤器。如果指定了记录,则同时添加指定的记录。记录可以是任何 JavaScript 对象或原语数组。 crossfilter.add(records)-将指定的记录添加到 crossfilter。 crossfilter.remove()-从交叉过滤器中删除与当前过滤器匹配的所有记录。 crossfilter.size()-返回交叉过滤器中的记录数。 crossfilter.groupAll()-这是一个将所有记录分组并减少到单个值的函数。 crossfilter.dimension(value)-用于使用指定的值访问器函数构造新维度。 dimension.filter(value)-用于过滤维度匹配值的记录,并返回维度。 dimension.filterRange(range)-过滤大于或等于 range[0] 且小于 range[1] 的维度值的记录。 dimension.filterAll()-清除此维度上的任何过滤器。 dimension.top(k)-用于根据该维度的自然顺序返回包含前 k 条记录的新数组。 dimension.bottom(k)-用于根据该维度的自然顺序返回包含底部 k 条记录的新数组。 dimension.dispose()-用于从交叉过滤器中删除维度。
在下一章中,我们将简要了解 D3.js。