Files
lynchmark.com/tests/6_csv_processor/outputs/x-ai_grok-4.1-fast.js
T

15 lines
779 B
JavaScript

async function processCSV(csv, config) {
const [{ default: Papa }, { aq, sum, mean, count }] = await Promise.all([
import('https://cdn.skypack.dev/papaparse'),
import('https://cdn.skypack.dev/arquero')
]);
const data = Papa.parse(csv, { header: true, skipEmptyLines: true }).data;
const { filterColumn, filterValue, groupBy, aggregateColumn, operation } = config;
let table = aq.from(data).filter(d => d[filterColumn] == filterValue);
if (operation !== 'count') {
table = table.derive({ [aggregateColumn]: d => Number(d[aggregateColumn]) || 0 });
}
const makeAgg = operation === 'count' ? count() : { sum: sum, avg: mean }[operation](aggregateColumn);
return table.groupby(groupBy).rollup({ result: makeAgg }).objects();
}
export default processCSV;