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

基于来源统计文件数量并分组的Jolt转换技术咨询

Jolt转换方案:按来源统计文件数量并列出文件

需求

按来源统计文件数量并列出对应文件。

输入数据

[
  {
    "filename": "FF/raw/first/raw_A/filenameA_20240212002113.DAT"
  },
  {
    "filename": "FF/raw/first/raw_A/filenameA__20240205150101.DAT"
  },
  {
    "filename": "FF/raw/first/raw_B/filenameB_20240212002113.DAT"
  },
  {
    "filename": "FF/raw/first/raw_B/filenameB_20240205150101.DAT"
  }
]

期望输出

[
  {
    "Source": "raw_A",
    "Filecount": 2,// 对应FileName数组的文件数量
    "FileName": [
      "filenameA_20240212002113.DAT",
      "filenameA_20240205150101.DAT"
    ]
  },
  {
    "Source": "raw_B",
    "Filecount": 2,
    "FileName": [
      "filenameB_20240212002113.DAT",
      "filenameB_20240205150101.DAT"
    ]
  }
]

尝试过的Jolt Spec(未得到预期结果)

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*/*/*/*/*": "Source:&(0,4):filecount:: Filename.&(0,5)" // 尝试用第5个星号提取叶子节点
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "$": "&2.[#2]"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "Filecount": "=size(@(1,&filename))"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[#2].&1"
      }
    }
  }
]

正确的Jolt转换方案

以下是实现需求的Jolt Spec:

[
  // 第一步:按来源分组,提取文件名
  {
    "operation": "shift",
    "spec": {
      "*": {
        "filename": {
          // 拆分路径,用&(0,4)获取第4段(raw_A/raw_B),&(0,5)获取文件名
          "*/*/*/*/*": {
            "$(0,5)": "&(0,4).FileName[]",
            "@(0,4)": "&(0,4).Source"
          }
        }
      }
    }
  },
  // 第二步:计算每个来源的文件数量
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "Filecount": "=size(@(1,FileName))"
      }
    }
  },
  // 第三步:将分组后的对象转为数组
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

转换步骤说明

  1. Shift操作(分组提取):遍历每个文件,拆分filename路径,把文件名归类到对应来源的FileName数组,同时记录Source字段。
  2. Modify操作(统计数量):对每个来源,用size函数计算FileName数组的长度,赋值给Filecount。
  3. Shift操作(转数组):将以来源名为键的对象结构转换为期望的数组格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:33:25