DC.js - Introducción a Crossfilter

Crossfilter es un conjunto de datos multidimensional. Admite una interacción extremadamente rápida con conjuntos de datos que contienen un millón o más de registros.

Conceptos básicos

El filtro cruzado se define en el espacio de nombres de filtro cruzado. Utiliza versiones semánticas. Considere un objeto de filtro cruzado cargado con una colección de frutas que se define a continuación:

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

Si necesitamos realizar los registros totales en un grupo, podemos usar la siguiente función:

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

Si queremos filtrar por un tipo específico -

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

Del mismo modo, podemos realizar agrupaciones con Crossfilter. Para hacer esto, podemos usar la siguiente función:

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

Por lo tanto, Crossfilter está diseñado para ser extremadamente rápido. Si desea volver a calcular los grupos a medida que se aplican los filtros, se calcula de forma incremental. Las dimensiones del filtro cruzado son muy caras.

API de filtro cruzado

Veamos en detalle las notables API de filtros cruzados.

  • crossfilter([records])- Se utiliza para construir un nuevo filtro cruzado. Si se especifica el registro, entonces agrega simultáneamente los registros especificados. Los registros pueden ser cualquier matriz de objetos o primitivos de JavaScript.

  • crossfilter.add(records) - Agrega los registros especificados al filtro cruzado.

  • crossfilter.remove() - Elimina todos los registros que coinciden con los filtros actuales del filtro cruzado.

  • crossfilter.size() - Devuelve el número de registros en el filtro cruzado.

  • crossfilter.groupAll() - Es una función para agrupar todos los registros y reducirlos a un solo valor.

  • crossfilter.dimension(value) - Se utiliza para construir una nueva dimensión utilizando la función de acceso al valor especificado.

  • dimension.filter(value) - Se utiliza para filtrar registros por el valor de coincidencia de la dimensión y devuelve la dimensión.

  • dimension.filterRange(range) - Filtra registros para valores de dimensión que son mayores o iguales al rango [0] y menores que el rango [1].

  • dimension.filterAll() - Borra los filtros de esta dimensión.

  • dimension.top(k) - Se utiliza para devolver una nueva matriz que contiene los primeros k registros, según el orden natural de esta dimensión.

  • dimension.bottom(k) - Se utiliza para devolver una nueva matriz que contiene los k registros inferiores, según el orden natural de esta dimensión.

  • dimension.dispose() - Se utiliza para eliminar la dimensión del filtro cruzado.

En el próximo capítulo, entenderemos brevemente sobre D3.js.