使用DC.js数据表按年创建汇总数据表

我一直试图使用dc.js和crossfilter来构建来自某个数据集的图表和表格。

到目前为止,构建图工作正常,但我想使用数据表功能来构建一个小的html表来汇总数据,如下所示:

|Year|TotalEmployees| 
|2015|555| 
|2016|666| 
|2017|777|

我的数据集大约有20 000行,这里是一个数据样本:

var data = [
{"Year":"2015","Category":"1","NbEmployee":"51"},
{"Year":"2015","Category":"2","NbEmployee":"31"},
{"Year":"2015","Category":"3","NbEmployee":"14"}
{"Year":"2016","Category":"1","NbEmployee":"51"},
{"Year":"2016","Category":"2","NbEmployee":"55"},
{"Year":"2016","Category":"3","NbEmployee":"65"},
{"Year":"2017","Category":"1","NbEmployee":"76"},
{"Year":"2017","Category":"2","NbEmployee":"98"},
];

到目前为止,这段代码每行数据返回一行结果 ,虽然感觉应该是一个简单的操作,但我无法找出正确的语法来构建每年一行的汇总表:

var ndx = crossfilter(data);
var tableDim = ndx.dimension(function(d) {
    return d.Year;
});

var datatable = dc.dataTable("#dc-data-table");

datatable
    .dimension(tableDim)
    .group(function(d) {
        d.NbEmployee += d.NbEmployee;
        return d.Year;
        })
    .columns([
        function(d) {return d.Year;},
        function(d) {return d.NbEmployee;},
    ]);

我已经尝试了无数次应用

.group().reduceSum()

函数的维度变成一个变量,然后将它传递给.group()参数,但我总是以编译错误,我现在很无能。

我正在寻找的SQL翻译是这样的:

SELECT 
    Year,
    NbEmp = SUM(NbEmploye)

FROM DB

GROUP BY
    Year

ORDER BY 
    Year

在此先感谢您的帮助!


dataTable的组不是一个组 - 是的,使用这种方法意味着完全不同于其他所有图表中的含义。 在这里,它是一个函数,在其他地方它是一个交叉过滤对象。

dataTable在dc.js图表​​中是唯一的,因为它从.dimension .dimension()对象读取其数据。 这是因为它默认显示原始数据行,而不是聚合数据。

但是,它可以用来显示组。 这是.top() ,因为如果您选择以降序显示,它实际上在维上调用的唯一方法是.top()

如果.bottom()升序显示,则可以使用假组生成支持.bottom()方法的对象。

链接地址: http://www.djcxy.com/p/32741.html

上一篇: Using DC.js datatable to create a table with aggregated data by year

下一篇: Fake group filtering in Crossfilter / dc.js