DC.js - Introdução ao Crossfilter
Crossfilter é um conjunto de dados multidimensional. Suporta interação extremamente rápida com conjuntos de dados contendo um milhão ou mais de registros.
Conceitos Básicos
Crossfilter é definido no namespace crossfilter. Ele usa versionamento semântico. Considere um objeto crossfilter carregado com uma coleção de frutas que é definida abaixo -
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 precisarmos realizar o total de registros em um grupo, podemos usar a seguinte função -
var count = fruits.groupAll().reduceCount().value();
Se quisermos filtrar por um tipo específico -
var filtering = fruits.dimension(function(d) { return d.type; });
filtering.filter(“Grapes”)
Da mesma forma, podemos realizar o agrupamento com Crossfilter. Para fazer isso, podemos usar a seguinte função -
var grouping = filtering.group().reduceCount();
var first = grouping.top(2);
Conseqüentemente, o Crossfilter foi desenvolvido para ser extremamente rápido. Se você quiser recalcular grupos conforme os filtros são aplicados, ele calcula de forma incremental. As dimensões do filtro cruzado são muito caras.
API Crossfilter
Vamos examinar as notáveis APIs Crossfilter em detalhes.
crossfilter([records])- É usado para construir um novo filtro cruzado. Se o registro for especificado, ele adiciona simultaneamente os registros especificados. Os registros podem ser qualquer array de objetos ou primitivos JavaScript.
crossfilter.add(records) - Adiciona os registros especificados ao filtro cruzado.
crossfilter.remove() - Remove todos os registros que correspondem aos filtros atuais do filtro cruzado.
crossfilter.size() - Retorna o número de registros no filtro cruzado.
crossfilter.groupAll() - É uma função para agrupar todos os registros e reduzir a um único valor.
crossfilter.dimension(value) - É usado para construir uma nova dimensão usando a função acessadora de valor especificada.
dimension.filter(value) - É usado para filtrar registros para o valor de correspondência da dimensão e retorna a dimensão.
dimension.filterRange(range) - Filtra os registros para o valor da dimensão que são maiores ou iguais ao intervalo [0] e menores que o intervalo [1].
dimension.filterAll() - Limpa todos os filtros nesta dimensão.
dimension.top(k) - É usado para retornar um novo array contendo os primeiros k registros, de acordo com a ordem natural desta dimensão.
dimension.bottom(k) - É usado para retornar um novo array contendo os registros k bottom, de acordo com a ordem natural desta dimensão.
dimension.dispose() - É usado para remover a dimensão do filtro cruzado.
No próximo capítulo, vamos entender brevemente sobre D3.js.