DC.js - Introduzione a Crossfilter

Crossfilter è un set di dati multidimensionale. Supporta un'interazione estremamente rapida con set di dati contenenti un milione o più record.

Concetti basilari

Crossfilter è definito nello spazio dei nomi crossfilter. Utilizza il controllo delle versioni semantico. Considera un oggetto crossfilter caricato con una raccolta di frutti definita di seguito:

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

Se dobbiamo eseguire i record totali in un gruppo, possiamo utilizzare la seguente funzione:

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

Se vogliamo filtrare per un tipo specifico -

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

Allo stesso modo, possiamo eseguire il raggruppamento con Crossfilter. Per fare ciò, possiamo utilizzare la seguente funzione:

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

Quindi, Crossfilter è costruito per essere estremamente veloce. Se si desidera ricalcolare i gruppi quando vengono applicati i filtri, il calcolo viene eseguito in modo incrementale. Le dimensioni dei filtri incrociati sono molto costose.

API Crossfilter

Esaminiamo in dettaglio le notevoli API Crossfilter.

  • crossfilter([records])- Viene utilizzato per costruire un nuovo filtro incrociato. Se il record è specificato, aggiunge simultaneamente i record specificati. I record possono essere qualsiasi array di oggetti o primitive JavaScript.

  • crossfilter.add(records) - Aggiunge i record specificati al crossfilter.

  • crossfilter.remove() - Rimuove tutti i record che corrispondono ai filtri correnti dal crossfilter.

  • crossfilter.size() - Restituisce il numero di record nel crossfilter.

  • crossfilter.groupAll() - È una funzione per raggruppare tutti i record e ridurli a un unico valore.

  • crossfilter.dimension(value) - Viene utilizzato per costruire una nuova dimensione utilizzando la funzione di accesso al valore specificato.

  • dimension.filter(value) - Viene utilizzato per filtrare i record per il valore di corrispondenza della dimensione e restituisce la dimensione.

  • dimension.filterRange(range) - Filtra i record per il valore della dimensione maggiore o uguale all'intervallo [0] e inferiore all'intervallo [1].

  • dimension.filterAll() - Cancella tutti i filtri su questa dimensione.

  • dimension.top(k) - Viene utilizzato per restituire un nuovo array contenente i primi k record, secondo l'ordine naturale di questa dimensione.

  • dimension.bottom(k) - Viene utilizzato per restituire un nuovo array contenente gli ultimi k record, secondo l'ordine naturale di questa dimensione.

  • dimension.dispose() - Viene utilizzato per rimuovere la dimensione dal filtro incrociato.

Nel prossimo capitolo, vedremo brevemente D3.js.