2012-10-15 10 views
3

Я пытаюсь использовать библиотеку javascript crossfilter (в сочетании с 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(); 

Где target либо category или team_name.

В дополнение к сохранению итоговых значений с начала года, я также хочу отображать итоговые значения для заданного диапазона. Например, выбранная пользователем неделя (т.е. с 1 по 5 октября).

Как создать отфильтрованную группу, которая возвращает итоговые значения для заданного диапазона дат? Использование поля week_date.

ответ

4

Ну, после некоторых поверхностных исследований, в том числе для сцинтиляции над перекрестным фильтром issues list, я пришел к выводу, что перекрестный фильтр в настоящее время не поддерживает группировку по нескольким полям.

Я был в состоянии работать вокруг этого, используя фильтрованную копию данных, а не, как таковой:

// 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) { 
    // ... 
}); 
Смежные вопросы