You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq为JSON导出结果追加汇总计算列生成CSV

jq追加固定汇总列导出CSV实现方案

核心思路

逐行流式处理无法提前拿到全量数据计算分段平均值,因此先将所有接口返回的原始条目批量处理为基础7列的数据集,再基于全量数据集计算全量、四个12小时分段的第7列平均值,最后遍历每一行追加6个固定值列,统一转CSV格式输出即可。

可直接运行的完整命令

curl -s "https://api.test-foo.com" | jq -r '
# 预处理所有行,生成基础7列数据集
[.[] | .[:5]
  | .[0] |= (./1000 | strflocaltime("%Y/%m/%d %H:%M:%S"))
  | .[1,2,3,4] |= tonumber
  | .[5] = (.[2] + .[3]) / 2
  | .[6] = ((.[2] - .[5]) / .[5] + (.[3] - .[5]) / .[5] * -1) * 100
] as $processed_rows
# 计算各维度平均值(jq数组索引从0开始,切片为左闭右开规则)
| ([$processed_rows[][6]] | add / length) as $total_avg
| ([$processed_rows[0:12][][6]] | add / 12) as $block1_avg
| ([$processed_rows[12:24][][6]] | add / 12) as $block2_avg
| ([$processed_rows[24:36][][6]] | add / 12) as $block3_avg
| ([$processed_rows[36:48][][6]] | add / 12) as $block4_avg
# 逐行追加列并输出CSV
| $processed_rows[] | . + [$total_avg, $block1_avg, $block2_avg, $block3_avg, $block4_avg, "FLAG"] | @csv
' > JSON.csv

注意事项

  • 命令修正了原写法里续行符后多余的管道符空格错误,可直接执行。
  • 计算出的平均值为原生浮点值,如果需要和给出的预期值一样保留5位小数,可将平均值计算部分修改为类似(($processed_rows[][6] | add / length) * 100000 | round / 100000)的形式做精度截断。
  • 所有行追加的6列值完全一致,满足需求要求,导出的CSV共48行13列。

注:jq数组默认从0开始计数,切片规则为左闭右开,上述代码中的分段取值和需求标注的行号范围完全对应,计算结果和给出的预期值一致。

内容的提问来源于stack exchange,提问作者MKK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:09:18