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

Power BI中如何将含JSON Payload的单条记录按键值对拆分为多条

问题结论

该需求完全可以在Power BI中实现,通过Power Query编辑器的结构化数据处理能力即可完成,适配ExtraDetails下任意数量、任意名称的<string, string>键值对,无需提前预设键名。

具体操作步骤
  • 步骤1:将原始数据导入Power BI后,右键点击数据表选择「编辑查询」进入Power Query编辑器,确认ID列为文本类型,Payload列为原始JSON文本格式。
  • 步骤2:选中Payload列,点击顶部菜单栏「转换」->「解析」->「JSON」,将文本格式的JSON转换为Power Query可识别的记录(Record)类型。
  • 步骤3:点击Payload列右上角的展开箭头,仅勾选ExtraDetails选项,确认后即可提取出JSON中的ExtraDetails节点内容。
  • 步骤4:选中提取后的ExtraDetails列,右键点击选择「到表」,弹出的配置窗口直接点击确认,即可将键值对记录转换为包含Name(键名)、Value(键值)两列的嵌套表。
  • 步骤5:点击嵌套表列右上角的展开箭头,勾选Name、Value两个字段,取消「使用原始列名作为前缀」的勾选,确认后单行数据会自动按键值对数量拆分为多行。
  • 步骤6:点击「添加列」->「自定义列」,输入公式= """" & [Name] & """:""" & [Value] & """",生成你需要的"键":"值"格式的Payload内容。
  • 步骤7:删除多余的Name、Value、原始JSON列,仅保留ID和新生成的Payload列即可。
直接可用的M代码示例

你也可以直接在Power Query的高级编辑器中替换以下代码,修改数据源部分即可直接使用:

let
    // 请将下方源步骤替换为你自己的数据源导入逻辑
    源 = Table.FromRecords({
        [ID = "746E2C41-79EE-46E7-8FC4-00958EEA13E2", Payload = "{""ExtraDetails"":{""response"":""bad one"",""err_msg"":""No connection""}}"]
    }),
    // 解析JSON格式的Payload
    解析JSON = Table.TransformColumns(源, {"Payload", Json.Document}),
    // 提取ExtraDetails节点
    提取ExtraDetails = Table.ExpandRecordColumn(解析JSON, "Payload", {"ExtraDetails"}, {"ExtraDetails"}),
    // 将键值对记录转为嵌套表
    记录转表 = Table.TransformColumns(提取ExtraDetails, {"ExtraDetails", each Record.ToTable(_)}),
    // 展开所有键值对为多行
    展开键值对 = Table.ExpandTableColumn(记录转表, "ExtraDetails", {"Name", "Value"}, {"键名", "键值"}),
    // 拼接为要求的Payload格式
    生成目标Payload = Table.AddColumn(展开键值对, "Payload", each """" & [键名] & """:""" & [键值] & """"),
    // 保留需要的列
    输出结果 = Table.SelectColumns(生成目标Payload, {"ID", "Payload"})
in
    输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:15:09