【发布时间】:2018-02-17 13:28:07
【问题描述】:
我一直在尝试使用 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
提前感谢您的帮助!
【问题讨论】:
标签: dc.js crossfilter