J'ai essayé d'utiliser dc.js et crossfilter pour créer des graphiques et des tables à partir d'un certain ensemble de données.Utilisation de DC.js datatable pour créer une table avec des données agrégées par année
graphiques bâtiment Jusqu'à présent, fonctionne très bien, mais je veux utiliser la fonctionnalité datatable pour construire une petite table html pour résumer les données comme suit:
|Year|TotalEmployees|
|2015|555|
|2016|666|
|2017|777|
Mon jeu de données a environ 20 000 lignes, voici un échantillon des données:
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"},
];
jusqu'à présent, ce morceau de code renvoie une ligne de résultat par ligne de données, et bien qu'il se sent comme il devrait être une manipulation simple, je ne peux pas trouver la bonne syntaxe construire da résumé table avec une ligne par année:
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;},
]);
J'ai essayé de nombreuses fois d'appliquer les
.group().reduceSum()
fonctions à la dimension dans une variable et passer ensuite au paramètre .group() , mais je finis toujours avec une erreur de compilation, je suis assez désemparé en ce moment.
La traduction SQL de ce que je suis à la recherche est la suivante:
SELECT
Year,
NbEmp = SUM(NbEmploye)
FROM DB
GROUP BY
Year
ORDER BY
Year
Merci d'avance pour votre aide!
Merci pour l'information, mais j'ai choisi de construire ma table de données avec C# Razor depuis que j'ai beaucoup de différentes tables à construire et DC.js n'est malheureusement pas aussi convivial pour les tables que je le voudrais. –
Bien sûr, compris - dc.js dataTable est à peine une preuve de concept. Quand les gens veulent quelque chose de plus agréable, ils se déplacent souvent sur DataTables.js ou similaire, en les connectant aux événements DC et aux données crossfilter. Pour toute personne rencontrant cela plus tard, voir par ex. les réponses pour https://stackoverflow.com/questions/21596616/dc-js-data-table-using-jquery-data-table-plugin, qui pourraient être améliorées mais fondamentalement la bonne idée. – Gordon