Files
lynchmark.com/tests/6_csv_processor/outputs_gemini/gemini-3-pro-preview TEMP_0.6.js
T

19 lines
597 B
JavaScript

const processCSV = async (csv, { filterColumn: fc, filterValue: fv, groupBy: gb, aggregateColumn: ac, operation: op }) => {
const [{ csvParse }, { rollup, sum, mean }] = await Promise.all([
import('https://esm.sh/d3-dsv@3'),
import('https://esm.sh/d3-array@3')
]);
return Array.from(
rollup(
csvParse(csv).filter(d => d[fc] == fv),
g => {
const v = g.map(d => +d[ac] || 0);
return op === 'count' ? v.length : op === 'sum' ? sum(v) : mean(v);
},
d => d[gb]
),
([k, v]) => ({ [gb]: k, result: v })
);
};
export default processCSV;