Crossfilter按组分组

时间:2016-07-06 01:17:54

标签: crossfilter

我试图显示每个地理位置使用crossfilter悬停时的总人数,但我当前的代码仅显示所有地理位置的总数。那么在crossfilter中对sql查询的等价是什么:SELECT COUNT(*)GROUP BY dma

这是我目前的代码

        //geography that is being hovered over, getting dma name and removing everything that is after the comma
    sel_geog = layer.feature.properties.dma_1;
    sel_geog = sel_geog.split(",")[0];
    console.log(sel_geog);

    //crossfilter to get total number of people of each geography
    var dmaDim = voter_data.dimension(function(d) {return d.dma == sel_geog}),
    dma_grp = dmaDim.groupAll().reduceCount().value();
    console.log(dma_grp);

1 个答案:

答案 0 :(得分:1)

Crossfilter并不意味着以您为每个用户互动构建新维度和组的方式使用。它意味着在交互发生之前构建维度和组,然后在基于用户交互进行过滤时快速更新它们。

从这个问题中我不清楚您的数据是什么样的,或者您要尝试做什么,但您可能希望为dma属性创建维度和分组,然后根据在那:

var voter_data = crossfilter(my_data);
var dmaDim = voter_data.dimension(function(d) { return d.dma; });
var dmaGroup = dmaDim.group();

此时dmaGroup.all()将是一个看起来像{ key: 'dmaKey', value: 10 }的对象数组,其中10d.dma === 'dmaKey'所有记录的计数。有很多方法可以与Crossfilter进行不同的聚合,但这可能会让你开始。