我试图显示每个地理位置使用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);
答案 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 }
的对象数组,其中10
是d.dma === 'dmaKey'
所有记录的计数。有很多方法可以与Crossfilter进行不同的聚合,但这可能会让你开始。