5

1 つ以上の値を持つ属性にディメンションを作成する方法はありますか? 例えば

{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

主な問題は、すべての異なるオブジェクトを列挙してハードコーディングしたくないということです。さらに、可能性のあるさまざまなアイテムがたくさんある可能性があります。これを行うよりスマートな方法はありますか?

前もって感謝します!

4

2 に答える 2

3

ここで同じ問題に直面し、現在の lib 機能で簡単な回避策が見られない場合は、こちらを参照してください

Pablo Navaro によって提案されたように、単一の値のディメンションに合わせてデータモデルを変更する際の問題は、他のディメンションに対して計算された統計が歪んでいないことを確認する必要があることです (二重カウント、修正手段など)。

フィルターが複数の値のディメンションで機能することを期待するか、コードベースを掘り下げて提案する時間がもう少しあることを願っています...

于 2012-08-01T07:53:46.277 に答える
2

データモデルの変更についてはどうですか? 私は次を使用していると思います:

[{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を使用して id で合計を計算できるかもしれません

于 2012-07-25T14:25:15.187 に答える