16

クロスフィルター ライブラリの API の説明は、私のスキルセットよりも上の人向けに書かれているように感じますが、それをマスターすることで問題が解決することもわかっています。

簡単にするために、この質問の API ページのサンプル データを参照します。

var payments = crossfilter([
  {date: "2011-11-14T16:17:54Z", quantity: 2, total: 190, tip: 100, type: "tab"},
  {date: "2011-11-14T16:20:19Z", quantity: 2, total: 190, tip: 100, type: "tab"},
  {date: "2011-11-14T16:28:54Z", quantity: 1, total: 300, tip: 200, type: "visa"},
  {date: "2011-11-14T16:30:43Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T16:48:46Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T16:53:41Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T16:54:06Z", quantity: 1, total: 100, tip: 0, type: "cash"},
  {date: "2011-11-14T16:58:03Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T17:07:21Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T17:22:59Z", quantity: 2, total: 90, tip: 0, type: "tab"},
  {date: "2011-11-14T17:25:45Z", quantity: 2, total: 200, tip: 0, type: "cash"},
  {date: "2011-11-14T17:29:52Z", quantity: 1, total: 200, tip: 100, type: "visa"}
]);

特定のキー (数量、合計など) に一致するレコードを返すことはできますが、キーと値のペアの組み合わせに一致する結果を返す方法がわかりません。たとえば、数量が 1 を超え、合計が 90 で、チップが 0 で、タブの種類が一致する結果セットを返すにはどうすればよいでしょうか。これは私が完全に迷っているところです。

4

2 に答える 2

26

各属性のディメンションを作成してから、指定した対応するフィルター基準を使用して各ディメンションのフィルターメソッドを呼び出すことができます。

var payments_by_quantity = payments.dimension(function(d){return d.quantity}),
    payments_by_total = payments.dimension(function(d){return d.total}),
    payments_by_tip = payments.dimension(function(d){return d.tip}),
    payments_by_type = payments.dimension(function(d){return d.type});

payments_by_quantity.filter([1, Infinity]);
payments_by_total.filter(90);
payments_by_tip.filter(0);
payments_by_type.filter("tab");

payments_by_type.top(Infinity)

効果は累積的であるため、最後の行には、実際には、すべての次元のすべてのフィルターに関するすべての値の結果があります。

于 2012-05-18T21:45:02.623 に答える