2012-07-20 3 views
5

하나 이상의 값을 갖는 특성에 차원을 만드는 방법이 있습니까? 예를 들어D3 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"]} 

내 목표는 서수 값이있는 차원을 따라 항목을 필터링 할 수있는 교차 필터를 만드는 것입니다. "필자는 항목 '사과'가있는 모든 항목을 원한다고 말할 수있는 필터/치수를 작성하는 방법이 있습니까?

내가 생각할 수있는 유일한 대안은 각 항목의 크기를 만드는 것입니다. 마찬가지로 :

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 

주된 문제점은 모든 다른 개체를 열거하고 하드 코딩하고 싶지 않다는 것입니다. 또한, 나는 가능한 많은 다른 항목을 가지고 끝낼 수 있습니다. 이것을하는 더 똑똑한 방법이 있습니까?

미리 감사드립니다.

답변

2

데이터 모델 변경은 어떻게됩니까? , this를 참조

[{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"}] 

은 아마 당신은 여기에 같은 문제에 직면 reduceSum

3

를 사용하여 ID로 합계를 계산할 수 있으며, 현재 LIB 기능과 쉬운 해결 방법을 볼 수 없습니다 : 내가 사용하는 것이라고 생각합니다.

Pablo Navaro가 제안한 단일 값 차원에 맞게 데이터 모델을 변경하면 다른 차원에 대해 계산 된 통계가 왜곡되지 않도록해야합니다 (중복 계산, 의미 보정 등).

다중 값 차원에서 작동하는 필터를 보거나 하나를 제안하기 위해 코드베이스를 파고 들으려면 더 많은 시간이 필요합니다.