4

クロスフィルター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にありますcategoryteam_name

YTDの合計を保持することに加えて、特定の範囲の合計も表示したいと思います。たとえば、ユーザーが選択した週(つまり、10月1日から5日)。

特定の日付範囲の合計を返すフィルター処理されたグループを作成するにはどうすればよいですか?私のweek_dateフィールドを使用します。

4

1 に答える 1

4

さて、クロスフィルターの問題リストのスキミングを含むいくつかの表面的な調査の結果、クロスフィルターは現在、複数のフィールドでのグループ化をサポートしていないと結論付けました。

代わりに、データのフィルター処理されたコピーを使用することで、これを回避することができました。

// 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) {
    // ...
});
于 2012-10-15T20:33:34.460 に答える