【问题标题】:Applying a date range filter to a crossfilter dimension将日期范围过滤器应用于交叉过滤器维度
【发布时间】:2012-10-05 19:20:22
【问题描述】:

我正在尝试使用 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();

其中targetcategoryteam_name

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

如何创建一个过滤组以返回给定日期范围的总数?使用我的 week_date 字段。

【问题讨论】:

    标签: javascript filter d3.js crossfilter


    【解决方案1】:

    好吧,经过一些肤浅的研究,包括浏览 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) {
        // ...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多