DC.js 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 API

让我们详细了解一下著名的 Crossfilter API。

  • crossfilter([records]) - 用于构造一个新的交叉过滤器。如果指定了记录,则同时添加指定的记录。记录可以是任何 JavaScript 对象或原语数组。
  • crossfilter.add(records) - 将指定的记录添加到交叉过滤器。
  • 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() - 用于从交叉过滤器中删除维度。

查看笔记

扫码一下
查看教程更方便