将日期范围过滤器应用于交叉过滤器维度

4
我正在尝试使用crossfilter JavaScript库(与D3.js一起)对JSON数据进行分组和过滤。
我的JSON数据具有以下字段:week_date,category,team_name,title,subtitle 我已成功地对所有记录进行了分组,以产生年度总计,类似于以下内容:
var dimension = data.dimension(function(d) { return d[target]; });
var dimensionGrouped = dimension.group().all();

其中targetcategoryteam_name之一。

除了保留年初至今的总计,我还想显示给定范围的总计。例如,用户选择的一周(即10月1日至5日)。

如何创建一个筛选组,返回给定日期范围的总计?使用我的week_date字段。

1个回答

4

经过一些表面的研究,包括浏览 crossfilter 的问题列表,我得出结论,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) {
    // ...
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接