DC.js - Introduction à Crossfilter

Crossfilter est un jeu de données multidimensionnel. Il prend en charge une interaction extrêmement rapide avec des ensembles de données contenant un million d'enregistrements ou plus.

Concepts de base

Crossfilter est défini sous l'espace de noms crossfilter. Il utilise le contrôle de version sémantique. Considérez un objet crossfilter chargé avec une collection de fruits qui est définie ci-dessous -

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 }
]);

Si nous devons effectuer le total des enregistrements dans un groupe, nous pouvons utiliser la fonction suivante -

var count = fruits.groupAll().reduceCount().value();

Si nous voulons filtrer par un type spécifique -

var filtering = fruits.dimension(function(d) { return d.type; });
filtering.filter(“Grapes”)

De même, nous pouvons effectuer des regroupements avec Crossfilter. Pour ce faire, nous pouvons utiliser la fonction suivante -

var grouping = filtering.group().reduceCount();
var first = grouping.top(2);

Par conséquent, Crossfilter est conçu pour être extrêmement rapide. Si vous souhaitez recalculer les groupes au fur et à mesure que les filtres sont appliqués, il calcule de manière incrémentielle. Les dimensions des filtres croisés sont très chères.

API Crossfilter

Passons en revue les API Crossfilter notables en détail.

  • crossfilter([records])- Il est utilisé pour construire un nouveau crossfilter. Si l'enregistrement est spécifié, il ajoute simultanément les enregistrements spécifiés. Les enregistrements peuvent être n'importe quel tableau d'objets JavaScript ou de primitives.

  • crossfilter.add(records) - Ajoute les enregistrements spécifiés au filtre croisé.

  • crossfilter.remove() - Supprime tous les enregistrements qui correspondent aux filtres actuels du filtre croisé.

  • crossfilter.size() - Renvoie le nombre d'enregistrements dans le filtre croisé.

  • crossfilter.groupAll() - C'est une fonction de regroupement de tous les enregistrements et de réduction à une seule valeur.

  • crossfilter.dimension(value) - Il est utilisé pour construire une nouvelle dimension à l'aide de la fonction d'accès à la valeur spécifiée.

  • dimension.filter(value) - Il est utilisé pour filtrer les enregistrements pour la valeur de correspondance de la dimension et renvoie la dimension.

  • dimension.filterRange(range) - Filtre les enregistrements pour la valeur de dimension supérieure ou égale à la plage [0] et inférieure à la plage [1].

  • dimension.filterAll() - Efface tous les filtres sur cette dimension.

  • dimension.top(k) - Il est utilisé pour renvoyer un nouveau tableau contenant les k premiers enregistrements, selon l'ordre naturel de cette dimension.

  • dimension.bottom(k) - Il est utilisé pour renvoyer un nouveau tableau contenant les k derniers enregistrements, selon l'ordre naturel de cette dimension.

  • dimension.dispose() - Il est utilisé pour supprimer la cote du filtre croisé.

Dans le prochain chapitre, nous comprendrons brièvement D3.js.