我一直在嘗試使用dc.js和crossfilter來從某個數據集構建圖表和表格。使用DC.js數據表按年創建一個包含彙總數據的表格
迄今爲止建設的圖表工作正常,但我想用數據表功能建立一個小型的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"},
];
到目前爲止,這段代碼返回每個數據的行結果一行,雖然感覺它應該是一個簡單的操作,我不能找出正確的語法建設DA總結表,每年有一行:
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()
功能尺寸應用到一個變量,然後將它傳遞給。集團()參數,但我總是以編譯錯誤結束,現在我很無能。
的SQL翻譯的東西我要找的是這樣的:
SELECT
Year,
NbEmp = SUM(NbEmploye)
FROM DB
GROUP BY
Year
ORDER BY
Year
預先感謝您的幫助!
感謝您提供的信息,但是我選擇使用C#Razor構建我的數據表,因爲我有許多不同的表要構建,並且DC.js可悲地不像用戶希望的那樣方便用戶使用。 –
當然,理解 - dc.js dataTable幾乎不是概念證明。當人們想要更好的東西時,他們通常會轉向DataTables.js或類似的東西,將其掛接到dc事件和交叉過濾器數據中。對於後來遇到此問題的人,請參閱https://stackoverflow.com/questions/21596616/dc-js-data-table-using-jquery-data-table-plugin的答案,可以改進,但基本上是正確的想法。 – Gordon