我正在尝试使用crossfilter javascript库(与D3.js结合使用)来分组和过滤json数据。
我的json数据包含以下字段:week_date, category, team_name, title, subtitle
我已经能够成功地对所有记录进行分组以产生YTD总计,使用类似的东西:
var dimension = data.dimension(function(d) { return d[target]; });
var dimensionGrouped = dimension.group().all();
其中target
为category
或team_name
。
除了保持YTD总数之外,我还想显示给定范围的总数。例如,用户选择的一周(即10月1日至5日)。
如何创建一个过滤组,返回给定日期范围的总数?使用我的week_date字段。
答案 0 :(得分:4)
嗯,经过一些肤浅的研究,包括浏览crossfilter的issues list,我得出结论,crossfilter目前不支持在多个领域进行分组。
我能够通过使用数据的过滤副本来解决这个问题,因此:
// YTD rows
var crossfilterData = crossfilter(data);
var ytdDimension = crossfilterData.dimension(function(d) { return d[target]; });
var ytdDimensionGrouped = ytdDimension.group().all();
ytdDimensionGrouped.forEach(function (item) {
// ...
});
// Ranged rows
var filteredData = data.filter(function (d) {
return d.week_date >= filter[0] && d.week_date <= filter[1];
});
crossfilterData = crossfilter(filteredData);
var rangeDimension = crossfilterData.dimension(function(d) { return d[target]; });
var rangeDimensionGrouped = rangeDimension.group().all();
rangeDimensionGrouped.forEach(function (item) {
// ...
});