DC.js - Wprowadzenie do Crossfilter
Crossfilter to wielowymiarowy zbiór danych. Obsługuje niezwykle szybką interakcję ze zbiorami danych zawierającymi milion lub więcej rekordów.
Podstawowe koncepcje
Crossfilter jest zdefiniowany w przestrzeni nazw Crossfilter. Używa wersji semantycznej. Rozważmy obiekt typu crossfilter załadowany kolekcją owoców zdefiniowaną poniżej -
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 }
]);
Jeśli potrzebujemy wykonać sumaryczne rekordy w grupie, możemy skorzystać z funkcji -
var count = fruits.groupAll().reduceCount().value();
Jeśli chcemy filtrować według określonego typu -
var filtering = fruits.dimension(function(d) { return d.type; });
filtering.filter(“Grapes”)
Podobnie możemy wykonać grupowanie za pomocą Crossfilter. Aby to zrobić, możemy użyć następującej funkcji -
var grouping = filtering.group().reduceCount();
var first = grouping.top(2);
Dlatego Crossfilter jest niezwykle szybki. Jeśli chcesz ponownie obliczyć grupy po zastosowaniu filtrów, jest to obliczane przyrostowo. Wymiary filtra krzyżowego są bardzo drogie.
Crossfilter API
Przyjrzyjmy się szczegółowo godnym uwagi interfejsom API Crossfilter.
crossfilter([records])- Służy do budowy nowego filtra krzyżowego. Jeśli rekord jest określony, jednocześnie dodaje określone rekordy. Rekordy mogą być dowolną tablicą obiektów JavaScript lub prymitywów.
crossfilter.add(records) - Dodaje określone rekordy do filtra krzyżowego.
crossfilter.remove() - Usuwa wszystkie rekordy, które pasują do bieżących filtrów z filtra krzyżowego.
crossfilter.size() - Zwraca liczbę rekordów w filtrze krzyżowym.
crossfilter.groupAll() - Jest to funkcja umożliwiająca grupowanie wszystkich rekordów i redukowanie do jednej wartości.
crossfilter.dimension(value) - Służy do konstruowania nowego wymiaru przy użyciu określonej funkcji dostępu do wartości.
dimension.filter(value) - Służy do filtrowania rekordów pod kątem wartości dopasowania wymiaru i zwraca wymiar.
dimension.filterRange(range) - Filtruje rekordy pod kątem wartości wymiaru, które są większe lub równe zakresowi [0] i mniejsze niż zakres [1].
dimension.filterAll() - Czyści wszystkie filtry w tym wymiarze.
dimension.top(k) - Służy do zwrócenia nowej tablicy zawierającej k górnych rekordów, zgodnie z naturalną kolejnością tego wymiaru.
dimension.bottom(k) - Służy do zwrócenia nowej tablicy zawierającej k dolnych rekordów, zgodnie z naturalną kolejnością tego wymiaru.
dimension.dispose() - Służy do usuwania wymiaru z filtra krzyżowego.
W następnym rozdziale zrozumiemy pokrótce o D3.js.