如何在Power BI中将JSON响应转换为表格用于数据可视化
Power BI中REST接口返回JSON转标准表格实现方法
你当前编写的M语句已经成功拿到了接口返回的完整JSON响应,该响应是Record结构,其中需要用到的业务明细数据存储在data字段下,为Record类型构成的数组,只需提取该字段并展开结构化内容即可得到可用于可视化的标准表格,两种实现方式如下:
方法1:直接修改M查询代码(适配生产环境,稳定性高)
在原有M语句的基础上追加数据提取、转表、列展开、类型配置步骤即可,修改后的完整代码如下:
let url = "http://*********", headers= [#"Content-Type"="application/json"], postData = Text.ToBinary("{""token"":""*************""}"), response = Web.Contents( url, [ Headers = headers, Content = postData ] ), jsonResponse = Json.Document(response), // 提取存储业务明细的data数组 dataList = jsonResponse[data], // 将数组转换为初始表结构 dataTable = Table.FromList(dataList, Splitter.SplitByNothing()), // 展开每行Record中的字段为独立列 expandedTable = Table.ExpandRecordColumn(dataTable, "Column1", {"idActivity", "organization", "date", "lat", "lng", "status", "company", "tag"}, {"idActivity", "organization", "date", "lat", "lng", "status", "company", "tag"} ), // 配置列数据类型,匹配业务含义 finalTable = Table.TransformColumnTypes(expandedTable,{ {"idActivity", Int64.Type}, {"organization", type text}, {"date", type datetime}, {"lat", type number}, {"lng", type number}, {"status", Int64.Type}, {"company", Int64.Type}, {"tag", Int64.Type} }) in finalTable
把代码直接粘贴替换高级编辑器里的原有内容,执行即可直接得到结构化表格。
方法2:图形界面操作(无需手动编写代码)
如果不想修改M代码,在Power Query查询编辑器中按以下步骤点击操作即可:
- 运行原有查询后,结果面板会展示
result、message、data三个字段,其中data字段标注为List类型,点击该列列头右侧的双向箭头扩展图标 - 在弹出的扩展配置窗口中,保持所有字段为选中状态,取消勾选「使用原始列名作为前缀」选项,点击确定
- 此时所有业务字段会自动展开为独立列,选中对应列后在顶部「转换」选项卡中配置列类型:日期列选择「日期/时间」类型,经纬度列选择「十进制数」类型,ID、状态、标签、公司编码列按需选择整数或文本类型即可
注意:如果后续接口返回的
data数组新增字段,固定列名的代码/手动扩展操作需要同步更新列配置;如果需要动态适配字段变化,可以将展开列的逻辑改为动态读取Record字段名,不过固定列名的写法刷新性能更好,适合字段稳定的正式对接场景。
内容的提问来源于stack exchange,提问作者user15500092
相关产品推荐
相关产品推荐

