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

17 lines
597 B
JavaScript

const processCSV = async (csv, { filterColumn: fCol, filterValue: fVal, groupBy: gBy, aggregateColumn: aCol, operation: op }) => {
const { csvParse, rollup, sum } = await import('https://cdn.jsdelivr.net/npm/d3@7/+esm')
return Array.from(
rollup(
csvParse(csv).filter(r => r[fCol] == fVal),
g => {
if (op === 'count') return g.length
const nums = g.map(r => +r[aCol] || 0), total = sum(nums)
return op === 'sum' ? total : total / nums.length
},
d => d[gBy]
),
([k, v]) => ({ [gBy]: k, result: v })
)
}
export default processCSV;