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

如何在Splunk中将嵌套JSON转换为指定格式字符串?

Splunk嵌套JSON格式转换解决方案

原始问题

现有嵌套JSON数据:

{
  "info1": "val1",
  "info2": "val2",
  "UsagePerUser": {
    "user1": 0.1,
    "user2": 0.2
  }
}

当前查询仅能提取完整的UsagePerUserJSON对象,无法拆分为用户名+百分比的多行格式,需要将输出调整为:

info1  info2  UsagePerUser  Usage %
===================================
val1   val2   user1         10.0
              user2         20.0
-----------------------------------
val3   val4   user3         30.0
              user4         40.0

修改后的完整查询

index="my_index" source="my_source"
| sort - _time
| dedup Path
| spath output=UsagePerUser path=UsagePerUser
| eval UsagePerUser = json(UsagePerUser)
// 核心转换步骤
| eval kv_pairs = mvzip(keys(UsagePerUser), values(UsagePerUser))
| mvexpand kv_pairs
| eval user=mvindex(split(kv_pairs, ","), 0), usage=round(mvindex(split(kv_pairs, ","), 1)*100, 1)
// 整理输出格式
| table info1, info2, user, usage
| rename user AS UsagePerUser, usage AS "Usage %"
| stats list(UsagePerUser) AS UsagePerUser, list("Usage %") AS "Usage %" by info1, info2

关键步骤解析

  • keys(UsagePerUser) + values(UsagePerUser):分别提取嵌套JSON中的用户名(键)和原始使用率(值),生成两个多值字段
  • mvzip(keys, values):将用户名与对应使用率一一配对,生成userX,0.X格式的多值字段
  • mvexpand kv_pairs:把多值字段的每个键值对展开为单独数据行
  • 数值转换:通过*100将原始使用率(0.1)转换为百分比(10.0),round(...,1)用于保留1位小数(可按需调整或移除)
  • stats list(...) by info1, info2:将同一info1/info2组合下的所有用户数据聚合,实现表格中分组换行的显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:25:08