Crossfilter无法过​​滤另一个维度

时间:2014-02-17 19:23:18

标签: javascript jquery d3.js crossfilter

jsFiddle of the issue

我正在尝试在Crossfilter中过滤两个维度。我有一个重复给定对象的数据数组:

{
    "bioguide_id" : "O000167",
    "first_name" : "Barack",
    "last_name" : "Obama",
    "party" : "Democrat",
    "religion" : "United Church of Christ",
    "pac_id" : "C00404145",
    "pac_name" : "Mendocino County Democratic Central Committee",
    "contribution_count" : 4,
    "contribution_sum" : 1264,
    "congress" : 110
}

我有以下查询来完成crossfilter工作:

var contributions = data.dimension(function(c) { return c.contribution_sum; });

contributions.top(3).forEach(function(p, i) {
    console.log(p.pac_name + " (" + p.congress + ")" + ": $" + p.contribution_sum);
});

但是,如何从Y contribution_sum获取前X congress我尝试了以下内容无效:

var congress = data.dimension(function(c) { return c.congress; });

congress.filter(111).group().order(function(c) { return c.contribution_sum; }).top(3).forEach(function(p, i) {
    console.log(p.pac_name + " (" + p.congress + ")" + ": $" + p.contribution_sum);
});

对于为什么有任何想法?

1 个答案:

答案 0 :(得分:1)

我相信你会希望过滤你的'congress'维度,然后请求'contrib_sum'维度的顶级成员:

var congress = data.dimension(function(c) { return +c.congress; });
var contributions = data.dimension(function(c) { return +c.contribution_sum; });

congress.filter(111);

contributions.top(3).forEach(function(p, i) {
    console.log(p.pac_name + " (" + p.congress + ")" + ": $" + p.contribution_sum);
});

完成JSFiddle:http://jsfiddle.net/eWr8Z/5/