mirror of
https://github.com/lynchmarkHQ/lynchmark.com.git
synced 2026-10-08 21:35:23 +00:00
21 lines
690 B
JavaScript
21 lines
690 B
JavaScript
const processCSV = async (csv, c) => {
|
|
const Papa = (await import('https://esm.run/papaparse@5')).default;
|
|
const { data } = Papa.parse(csv, { header: true });
|
|
|
|
return Object.values(
|
|
data.reduce((acc, r) => {
|
|
if (r[c.filterColumn] != c.filterValue) return acc;
|
|
const k = r[c.groupBy];
|
|
acc[k] ??= { [c.groupBy]: k, sum: 0, count: 0 };
|
|
acc[k].sum += Number(r[c.aggregateColumn]) || 0;
|
|
acc[k].count++;
|
|
return acc;
|
|
}, {})
|
|
).map(g => ({
|
|
[c.groupBy]: g[c.groupBy],
|
|
result: c.operation === 'count' ? g.count : c.operation === 'sum' ? g.sum : g.sum / g.count
|
|
}));
|
|
};
|
|
export default processCSV;
|
|
// Generation time: 31.429s
|
|
// Result: PASS
|