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.