使用幂查询转换json(在单个列中混合列表和记录)

时间:2015-11-26 00:31:29

标签: json transformation powerquery

我正在尝试转换(我是权力查询转换中的新手)json数据。我们的目标是合并和转换一些json文件来创建报告。 json文件由我们的Web应用程序公开的不同feed提供。作为学习的一部分,我们尝试转换单个json文件。

但我们的json数据中的一个字段是 被电源查询识别为记录和列表类型的混合 (电源查询中的一列是显示列表和记录的混合。)

在这种情况下,我无法获取这些订单项的值。

screenshot for power query

解决此问题的任何指示都非常有用

提前致谢

请找到样本json:

temp=List1.

}

注意此文件中的一个对象应代表excel中的一行。

1 个答案:

答案 0 :(得分:2)

我想在这里分享一个外部链接(不确定我是否违反任何政策,如果是这样请纠正我),以便其他人也可以使用这些知识。 我的核心问题在www.mrexcel.com/forum/power-bi的帮助下得到了解决。通过这个片段,我能够创建一个基于Excel的工具,通过组合不同的源来为业务准备数据集。请找到所需的代码(M,但我的输入文件非常具体)

let
    source = Json.Document(File.Contents("d:\path\filename.json")),
    tabled = Table.FromRecords({source}),
    expandListField = Table.ExpandListColumn(tabled, "thingstodo"),
    expandRecField  = Table.ExpandRecordColumn(expandListField, "thingstodo", {"propCode", "hours"}, {"propCode", "hours"}),
    expandList2  = Table.ExpandListColumn(expandRecField, "hours"),
    fieldForRec  = Table.AddColumn(expandList2,"Rec",each if Value.Is([hours], type record) then [hours] else null,type record),
    fieldForList = Table.AddColumn(fieldForRec, "List",each if Value.Is([hours], type list) then [hours] else null,type list),
    removed = Table.RemoveColumns(fieldForList, {"hours"}),
    expandRecField2 = Table.ExpandRecordColumn(removed, "Rec", {"day", "time"}, {"day", "time"}),
    expandList3 = Table.ExpandListColumn(expandRecField2, "List")
in
    expandList3

请在下面找到此论坛的链接:

http://www.mrexcel.com/forum/power-bi/904936-transforming-json-power-query-mix-list-record-single-column-2.html

由于