Power BI处理多结构JSON转独立表:解决仅识别首个JSON的问题
Power BI 批量转换多结构JSON为独立数据表解决方案
场景一:所有JSON存储在同一张基础表中(含表名标记)
如果你的多个JSON数据集中在一张表(例如包含Table_Name和JSON_Data两列,每行对应一个目标表的JSON),按以下步骤操作:
- 解析JSON文本
- 进入Power Query编辑器,选中基础表,点击添加列 > 自定义列,输入M代码:
此步骤将每行的JSON文本解析为可操作的列表格式。= Json.Document([JSON_Data])
- 进入Power Query编辑器,选中基础表,点击添加列 > 自定义列,输入M代码:
- 拆分并扩展JSON结构
- 选中新生成的自定义列,点击转换 > 展开到新行,将JSON数组中的每个对象拆分为单独行。
- 再次选中该列,点击转换 > 扩展到列 > 扩展所有列,Power BI会自动识别JSON的键作为列名,生成结构化表格。
- 拆分并保存为独立表
- 选中
Table_Name列,点击主页 > 筛选行,分别筛选每个表名(如Employee、Order)。 - 筛选完成后,点击主页 > 关闭并上载至,选择"仅创建连接",右键对应连接选择"加载到...",指定表名即可生成独立数据表。
- 选中
场景二:每个JSON为独立文本/文件
如果每个JSON是单独的文本文件或可复制的纯文本:
从JSON文件导入
- 点击获取数据 > 文件 > JSON,选择目标JSON文件,Power Query会自动解析为表格,调整列类型后,关闭并上载,命名为对应表名。
从复制的JSON文本导入
- 点击获取数据 > 空白查询,进入Power Query编辑器,打开高级编辑器,替换默认代码为:
let Source = Json.Document("此处粘贴你的完整JSON文本"), 转换为表 = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), 扩展列 = Table.ExpandRecordColumn(转换为表, "Column1", Record.FieldNames(Source{0}), Record.FieldNames(Source{0})) in 扩展列 - 替换完成后点击"完成",按需调整列的数据类型(如日期、数值),最后关闭并上载为对应表名。
关键注意事项
- 确保所有JSON为标准数组格式(外层由
[]包裹对象集合),若为单个对象,需手动在外层添加[]后再解析。 - 不同结构的JSON必须单独处理,禁止一次性合并扩展,否则会因结构不匹配导致列丢失或数据错误。
- 若基础表中JSON集中在同一列的多个单元格,必须先执行展开到新行操作,否则只会处理首个单元格的JSON数据。
内容的提问来源于stack exchange,提问作者Chinna Swamulu
相关产品推荐
相关产品推荐

