2012-07-20 32 views
5

Có cách nào để tạo thứ nguyên trên thuộc tính có một hoặc nhiều giá trị không? Ví dụ:Bộ lọc rời rạc cho Kích thước Df Crossfilter

{quantity: 2, total: 190, tip: 100, items: ["apple","sandwich"], 
{quantity: 2, total: 190, tip: 100, items: ["ice-cream"]}, 
{quantity: 1, total: 300, tip: 200, items: ["apple", "coffee"]} 

Mục tiêu của tôi là tạo bộ lọc chéo có thể lọc ra các mục có cùng thứ nguyên có giá trị thứ tự. Có cách nào tôi viết một bộ lọc/kích thước mà sẽ cho phép tôi nói "Tôi muốn tất cả các mục có mục 'táo'"?

Cách giải quyết duy nhất tôi có thể nghĩ là tạo thứ nguyên cho mỗi mục. Giống như vậy:

var paymentsByApple = payments.dimension(function(d) { return $.inArray("apple", d.items); }); 
var paymentsByCoffee = payments.dimension(function(d) { return $.inArray("coffee", d.items); }); 
// and one for every possible item 

Vấn đề chính là tôi không muốn liệt kê và mã hóa cứng tất cả các đối tượng khác nhau. Hơn nữa, tôi có thể có rất nhiều vật phẩm khác nhau. Có cách nào thông minh hơn để thực hiện việc này không?

Cảm ơn trước!

Trả lời

2

Điều gì về việc thay đổi mô hình dữ liệu của bạn? Tôi nghĩ rằng việc sử dụng:

[{id: 1, quantity: 1, total: 100, tip: 50, item: "apple"}, 
{id: 1, quantity: 1, total: 90, tip: 50, item: "sandwich"}, 
{id: 2, quantity: 1, total: 190, tip: 100, item: "ice-cream"}, 
{id: 3, quantity: 1, total: 300, tip: 100, item: "apple"}, 
{id: 3, quantity: 1, total: 300, tip: 100, item: "coffee"}] 

lẽ bạn có thể tính toán kết quả bằng cách sử dụng id reduceSum

3

Đối mặt với cùng một vấn đề ở đây và không thấy một workaround dễ dàng với các tính năng lib hiện tại, xem this.

Vấn đề với việc thay đổi datamodel để phù hợp với một kích thước giá trị được đề xuất bởi Pablo Navaro là bạn cần đảm bảo rằng các số liệu thống kê được tính cho các thứ nguyên khác không bị bóp méo (đếm đôi, sửa chữa phương tiện, ....)

Hy vọng sẽ thấy bộ lọc hoạt động trên nhiều thứ nguyên giá trị hoặc để có thêm thời gian để khai thác vào cơ sở mã để đề xuất một ...

Các vấn đề liên quan