DC.js - Введение в 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() - Используется для удаления размера из кросс-фильтра.

В следующей главе мы вкратце разберемся с D3.js.