📜  DC.js-Crossfilter简介

📅  最后修改于: 2020-10-25 09:44:15             🧑  作者: Mango


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]) -用于构造一个新的crossfilter。如果指定了记录,则它将同时添加指定的记录。记录可以是JavaScript对象或原语的任何数组。

  • crossfilter.add(records) -将指定的记录添加到crossfilter。

  • crossfilter.remove() -从交叉过滤器中删除所有与当前过滤器匹配的记录。

  • crossfilter.size() -返回交叉过滤器中的记录数。

  • crossfilter.groupAll() -它是把所有的记录,并减少为单个值的函数。

  • crossfilter.dimension(value) -用于使用指定的值访问器函数构造新维度。

  • Dimensions.filter(value) -用于过滤记录匹配维度的值,并返回维度。

  • Dimensions.filterRange(range) -过滤大于或等于range [0]且小于range [1]的维度值记录。

  • Dimensions.filterAll() -清除此维度上的所有过滤器。

  • Dimensions.top(k) -根据此维度的自然顺序,它用于返回包含前k个记录的新数组。

  • Dimensions.bottom(k) -根据该维度的自然顺序,它用于返回包含最后k个记录的新数组。

  • Dimensions.dispose() -用于从交叉过滤器中删除维度。

在下一章中,我们将简要了解D3.js。