Группировка Crossfilter.js по нескольким категориальным осям

У меня следующая проблема: мой набор данных выглядит следующим образом:

[{
"id": 1542284,
"date": "2013-04-22",
"kilometer": 111179.364089776,
"country": "RU",
"ps": 100,
"model": "110A"
},
{
"id": 1542285,
"date": "2013-08-30",
"kilometer": 211963.649155722,
"country": "FR",
"ps": 110
"model": "110A"
},
{
"id": 1542286,
"date": "2013-03-07",
"kilometer": 163694.246231156,
"country": "DE",
"ps": 120
"model": "210B"}]

теперь я хочу использовать dc.js вместе с crossfilter.js, чтобы создать HEATMAP с осью x: country и осью y: model. Атрибут цвета будет соответствовать количеству элементов в группе: | (модель страны x) |

Теперь у меня вопрос, как сделать групповой оператор crossfilter.js с двумя категориальными осями ?!

var ndx = crossfilter(data);
var countryDimension = ndx.dimension(function (d){
    return d.country;
});

modelByCountryGroup = countryDimension.group().reduce(
    /* callback for when data is added to the current filter results */
    function (p, v) {
        ++p.count;
        //HOW DO I STORE/PROCESS v.model HERE
        return p;
    },
    /* callback for when data is removed from the current filter results */
    function (p, v) {
        --p.count;
        //HOW DO I STORE/PROCESS v.model HERE
        return p;
    },
    /* initialize p */
    function () {
        return {count: 0, WHATDOINEEDHERE};
    }
);

person cojack20    schedule 07.09.2015    source источник


Ответы (1)


Можете ли вы создать комбинированное измерение?

var dim = ndx.dimension(function(d) { return d.country + ":" + d.model; });
var group = dim.group();

Это даст вам подсчет по модели страны x, верно?

person Ethan Jewett    schedule 07.09.2015
comment
@ethan: Это действительно здорово :) - person anmol koul; 08.09.2015
comment
@anmolkoul В этой ситуации это просто, потому что коды стран имеют фиксированную длину. Если есть переменные длины и / или мы не можем гарантировать, что разделитель не появится в значении, тогда у нас начнутся проблемы. - person Ethan Jewett; 09.09.2015