交叉过滤器按日期分类的回报增长量

时间:2019-04-15 17:13:29

标签: crossfilter

我第一次使用交叉过滤器制作仪表板,但遇到了问题。

我需要制作一个图表,该图表将按日期维度返回已使用的存储量。由于它是可移动存储,因此我提供的Web服务仅给我每天消耗的存储空间,而不是总数。

所以,如果我有这样的东西:

[
  {"jobName": "A", "dataLength": 368, "date": "2019-01-05"},
  {"jobName": "A", "dataLength": 1420, "date": "2019-01-06"},
  {"jobName": "B", "dataLength": 553, "date": "2019-01-06"},
  {"jobName": "A", "dataLength": 156, "date": "2019-01-08"},
  {"jobName": "B", "dataLength": 937, "date": "2019-01-08"},
  {"jobName": "B", "dataLength": 423, "date": "2019-01-09"},
  {"jobName": "B", "dataLength": 223, "date": "2019-01-10"}
]

它将返回如下内容:

[
  {"key": "2019-01-05", "value":  368},
  {"key": "2019-01-06", "value":  2341},
  {"key": "2019-01-08", "value":  3434},
  {"key": "2019-01-09", "value":  3857},
  {"key": "2019-01-10", "value":  4080}
]

有人知道如何实现这一目标吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以use a fake group to accumulate values,因为该组被读取:

function accumulate_group(source_group) {
    return {
        all:function () {
            var cumulate = 0;
            return source_group.all().map(function(d) {
                cumulate += d.value;
                return {key:d.key, value:cumulate};
            });
        }
    };
}
var group = dimension.group().reduceSum(d => d.dataLength);
chart.group(accumulate_group(group));

感谢@Xavier Dutoit!