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.