Учебники

DC.js — Введение в 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

Давайте подробно рассмотрим известные API Crossfilter.

  • crossfilter ([records]) — используется для создания нового перекрестного фильтра. Если запись указана, то она одновременно добавляет указанные записи. Записи могут быть любым массивом объектов JavaScript или примитивов.

  • crossfilter.add (records) — добавляет указанные записи в перекрестный фильтр.

  • 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 () — Он используется для удаления измерения из перекрестного фильтра.

crossfilter ([records]) — используется для создания нового перекрестного фильтра. Если запись указана, то она одновременно добавляет указанные записи. Записи могут быть любым массивом объектов JavaScript или примитивов.

crossfilter.add (records) — добавляет указанные записи в перекрестный фильтр.

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.