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

在Power BI中解析自定义结构的JSON数据

在Power BI中解析自定义结构JSON的方法

我需要解析以下结构的JSON数据:

{"name":{"0":"Jerry","1":"Ron","2":"Sally","3":"Sue"},"grade":{"0":78,"1":99,"2":88,"3":97}}

尝试过通过「转换→转成表格→解析JSON」的流程处理,得到的结果不符合需求:

  • 第一步得到Table1:
Column1
Record
  • 展开后得到Table2:
NameScore
RecordRecord
  • 再次展开后得到Table3(横向展开,不符合需求):
Name.0Name.1Name.2Name.3Grade.0Grade.1Grade.2Grade.3
JerryRonSallySue78998887

我需要得到Table4的格式(纵向行列结构):

NameScore
Jerry78
Ron99
Sally88
Sue87

解决方法(Power Query编辑器)

方法1:可视化步骤操作

  1. 完成「解析JSON」步骤后,得到包含name和grade两个Record列的表(即Table2状态)。
  2. 选中name列,点击「转换→逆透视列→逆透视值」,得到带索引、姓名和grade Record的表:
AttributeValuegrade
0JerryRecord
1RonRecord
2SallyRecord
3SueRecord
  1. 添加自定义列,公式输入:Record.Field([grade], [Attribute]),提取对应索引的分数值。
  2. 重命名列:将Value改为Name,自定义列改为Score,最后删除Attribute和grade列,即可得到目标格式。

方法2:直接使用M脚本批量处理

打开Power Query编辑器的「高级编辑器」,替换现有脚本为以下内容(若JSON是从外部加载,只需替换Source行的内容):

let
    Source = Json.Document("{""name"":{""0"":""Jerry"",""1"":""Ron"",""2"":""Sally"",""3"":""Sue""},""grade"":{""0"":78,""1"":99,""2"":88,""3"":97}}"),
    NameTable = Record.ToTable(Source[name]),
    GradeTable = Record.ToTable(Source[grade]),
    JoinedTable = Table.Join(NameTable, "Name", GradeTable, "Name"),
    RenamedColumns = Table.RenameColumns(JoinedTable,{{"Value", "Name"}, {"Value.1", "Score"}})
in
    RenamedColumns

脚本逻辑:将name和grade的Record结构转成表格,通过共同索引关联,最后重命名列得到目标结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:40:25