2012-07-20 9 views
5

Czy istnieje sposób na utworzenie wymiaru na atrybucie, który ma jedną lub więcej wartości? Na przykład:Discrete filter for D3 Crossfilter Dimensions

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

Moim celem jest utworzenie filtru krzyżowego, który może odfiltrowywać wpisy wzdłuż wymiaru z wartościami porządkowymi. Czy istnieje sposób, w jaki piszę filtr/wymiar, który pozwoli mi powiedzieć "Chcę wszystkie wpisy, które mają przedmiot" jabłko "?

Jedynym sposobem obejścia tego problemu jest utworzenie wymiaru dla każdego elementu. Podobnie jak:

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 

Głównym problemem jest to, że nie chcę wyliczać i zakodować wszystkich różnych obiektów. Co więcej, mogę skończyć mając wiele możliwych różnych przedmiotów. Czy jest to mądrzejszy sposób na zrobienie tego?

Z góry dziękuję!

Odpowiedz

2

Co ze zmianą modelu danych? Myślę, że przy użyciu:

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

Może można obliczyć sumy przez ID używając reduceSum

3

obliczu tego samego problemu tu nie widzę łatwy obejście z obecnych lib funkcji, patrz this.

Problem ze zmianą zestawu danych w celu dopasowania pojedynczego wymiaru wartości zaproponowanego przez Pablo Navaro polega na tym, że należy upewnić się, że statystyki obliczone dla innych wymiarów nie są zniekształcone (podwójne liczenie, środki korygujące, ....)

Mam nadzieję, że zobaczę filtr działający w wielu wymiarach lub będę mieć więcej czasu na przekopanie się w bazie kodu, aby zaproponować ...