DC.js - Giới thiệu về Crossfilter

Crossfilter là một tập dữ liệu đa chiều. Nó hỗ trợ tương tác cực nhanh với các tập dữ liệu chứa một triệu bản ghi trở lên.

Các khái niệm cơ bản

Bộ lọc chéo được xác định trong không gian tên bộ lọc chéo. Nó sử dụng phiên bản ngữ nghĩa. Hãy xem xét một đối tượng bộ lọc chéo được tải với một bộ sưu tập các loại trái cây được xác định bên dưới:

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

Nếu chúng ta cần thực hiện tổng số bản ghi trong một nhóm, chúng ta có thể sử dụng hàm sau:

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

Nếu chúng ta muốn lọc theo một loại cụ thể -

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

Tương tự, chúng ta có thể thực hiện phân nhóm với Crossfilter. Để làm điều này, chúng ta có thể sử dụng hàm sau:

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

Do đó, Crossfilter được xây dựng để cực kỳ nhanh. Nếu bạn muốn tính toán lại các nhóm khi bộ lọc được áp dụng, nó sẽ tính toán tăng dần. Kích thước bộ lọc chéo rất đắt.

API Crossfilter

Hãy để chúng tôi đi qua các API Crossfilter đáng chú ý một cách chi tiết.

  • crossfilter([records])- Nó được sử dụng để xây dựng một bộ lọc chéo mới. Nếu bản ghi được chỉ định, thì nó đồng thời thêm các bản ghi được chỉ định. Bản ghi có thể là bất kỳ mảng nào của các đối tượng JavaScript hoặc bản gốc.

  • crossfilter.add(records) - Thêm các bản ghi được chỉ định vào bộ lọc chéo.

  • crossfilter.remove() - Loại bỏ tất cả các bản ghi phù hợp với các bộ lọc hiện tại khỏi bộ lọc chéo.

  • crossfilter.size() - Trả về số lượng bản ghi trong bộ lọc chéo.

  • crossfilter.groupAll() - Đây là một chức năng để nhóm tất cả các bản ghi và giảm xuống một giá trị duy nhất.

  • crossfilter.dimension(value) - Nó được sử dụng để xây dựng một thứ nguyên mới bằng cách sử dụng hàm truy cập giá trị được chỉ định.

  • dimension.filter(value) - Nó được sử dụng để lọc các bản ghi cho giá trị khớp của thứ nguyên và trả về thứ nguyên.

  • dimension.filterRange(range) - Bản ghi bộ lọc cho giá trị của thứ nguyên lớn hơn hoặc bằng dải ô [0] và nhỏ hơn dải ô [1].

  • dimension.filterAll() - Xóa bất kỳ bộ lọc nào trên thứ nguyên này.

  • dimension.top(k) - Nó được sử dụng để trả về một mảng mới chứa k bản ghi hàng đầu, theo thứ tự tự nhiên của chiều này.

  • dimension.bottom(k) - Nó được sử dụng để trả về một mảng mới chứa k bản ghi dưới cùng, theo thứ tự tự nhiên của chiều này.

  • dimension.dispose() - Nó được sử dụng để loại bỏ kích thước khỏi bộ lọc chéo.

Trong chương tiếp theo, chúng ta sẽ hiểu sơ lược về D3.js.