DC.js - Einführung in Crossfilter

Crossfilter ist ein mehrdimensionaler Datensatz. Es unterstützt eine extrem schnelle Interaktion mit Datensätzen, die eine Million oder mehr Datensätze enthalten.

Grundlegendes Konzept

Crossfilter wird unter dem Crossfilter-Namespace definiert. Es verwendet semantische Versionierung. Stellen Sie sich ein Crossfilter-Objekt vor, das mit einer Sammlung von Früchten geladen ist, die unten definiert ist:

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

Wenn wir die Gesamtdatensätze in einer Gruppe ausführen müssen, können wir die folgende Funktion verwenden:

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

Wenn wir nach einem bestimmten Typ filtern möchten -

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

Ebenso können wir eine Gruppierung mit Crossfilter durchführen. Dazu können wir die folgende Funktion verwenden:

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

Daher ist Crossfilter extrem schnell gebaut. Wenn Sie Gruppen neu berechnen möchten, während Filter angewendet werden, wird diese schrittweise berechnet. Querfilterabmessungen sind sehr teuer.

Crossfilter-API

Lassen Sie uns die bemerkenswerten Crossfilter-APIs im Detail durchgehen.

  • crossfilter([records])- Es wird verwendet, um einen neuen Crossfilter zu erstellen. Wenn der Datensatz angegeben ist, werden gleichzeitig die angegebenen Datensätze hinzugefügt. Datensätze können beliebige Arrays von JavaScript-Objekten oder Grundelementen sein.

  • crossfilter.add(records) - Fügt die angegebenen Datensätze zum Crossfilter hinzu.

  • crossfilter.remove() - Entfernt alle Datensätze, die mit den aktuellen Filtern übereinstimmen, aus dem Crossfilter.

  • crossfilter.size() - Gibt die Anzahl der Datensätze im Crossfilter zurück.

  • crossfilter.groupAll() - Es ist eine Funktion zum Gruppieren aller Datensätze und zum Reduzieren auf einen einzigen Wert.

  • crossfilter.dimension(value) - Es wird verwendet, um eine neue Dimension mit der angegebenen Wertzugriffsfunktion zu erstellen.

  • dimension.filter(value) - Es wird verwendet, um Datensätze nach dem Übereinstimmungswert der Dimension zu filtern und die Dimension zurückzugeben.

  • dimension.filterRange(range) - Filtert Datensätze für den Wert der Dimension, die größer oder gleich dem Bereich [0] und kleiner als der Bereich [1] sind.

  • dimension.filterAll() - Löscht alle Filter in dieser Dimension.

  • dimension.top(k) - Es wird verwendet, um ein neues Array zurückzugeben, das die Top-k-Datensätze gemäß der natürlichen Reihenfolge dieser Dimension enthält.

  • dimension.bottom(k) - Es wird verwendet, um ein neues Array zurückzugeben, das die unteren k Datensätze gemäß der natürlichen Reihenfolge dieser Dimension enthält.

  • dimension.dispose() - Es wird verwendet, um die Abmessung vom Kreuzfilter zu entfernen.

Im nächsten Kapitel werden wir kurz auf D3.js eingehen.