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.