mirror of
https://github.com/lynchmarkHQ/lynchmark.com.git
synced 2026-10-08 21:35:23 +00:00
13 lines
620 B
JavaScript
13 lines
620 B
JavaScript
export const processCSV = async (c, { filterColumn: f, filterValue: v, groupBy: g, aggregateColumn: a, operation: o }) => {
|
|
const { default: P } = await import('https://esm.sh/papaparse');
|
|
return [...P.parse(c, { header: true, skipEmptyLines: true }).data
|
|
.filter(r => r[f] == v)
|
|
.reduce((m, r) => {
|
|
const k = r[g], n = +r[a] || 0, x = m.get(k) || { s: 0, c: 0 };
|
|
return m.set(k, { s: x.s + n, c: x.c + 1 });
|
|
}, new Map())]
|
|
.map(([k, x]) => ({ [g]: k, result: o == 'count' ? x.c : o == 'sum' ? x.s : x.s / x.c }));
|
|
};
|
|
export default processCSV;
|
|
// Generation time: 50.753s
|
|
// Result: PASS
|