使用强力查询转换 json(在单个列中混合列表和记录)
Transforming json with power query (mix of list and record in a single column)
我正在尝试转换(我是幂查询转换方面的新手)json 数据。我们的目标是合并和转换几个 json 文件以创建报告。 json 文件由我们的网络应用程序公开的不同提要提供。作为学习的一部分,我们尝试转换单个 json 文件。
但是我们 json 数据中的一个字段是 被 power query 识别为记录和列表类型的混合(电源查询中的一列显示列表和记录的混合)。
在这种情况下,我无法获取这些订单项的值。
任何解决此问题的建议都会非常有帮助
提前致谢
请查找样本 json :
{
"@timestamp": "27-11-2015 21:31:30 PM", "thingstodo": [{
"propCode": "foo1"
},
{
"propCode": "foo2"
},
{
"propCode": "foo3",
"hours": [{
"day": "Monday-Thursday",
"time": "2:00PM - 1:00AM"
},
{
"day": "Friday-Sunday",
"time": "10:00AM - 2:00AM"
}]
},
{
"propCode": "foo4"
},
{
"propCode": "foo5",
"hours": [{
"day": "Daily",
"time": "24 Hours"
}]
},
{
"propCode": "foo6",
"hours": [{
"day": "10am - 4am",
"time": "bar & lounge area"
},
{
"day": "12pm - 4am",
"time": "gaming area"
}]
},
{
"propCode": "foo7",
"hours": [{
"day": "Daily",
"time": "11:00AM - 1:00AM"
},
{
"day": "Happy Hour Daily",
"time": "4:00PM - 6:00PM"
}]
},
{
"propCode": "foo8"
},
{
"propCode": "foo9"
},
{
"propCode": "foo10",
"hours": [{
"day": "Sun-Thu",
"time": "10:00AM - 11:00PM"
},
{
"day": "Fri & Sat",
"time": "10:00AM - 12:00AM"
}]
},
{
"propCode": "foo11",
"name": "Atlantic City Deals and Packages",
"brand": "harrahs"
},
{
"propCode": "foo12"
},
{
"propCode": "foo13",
"hours": [{
"day": "Sun-Thu",
"time": "11:00AM - 1:00AM"
},
{
"day": "Fri-Sat",
"time": "11:00AM - 2:00AM"
}]
},
{
"propCode": "foo8",
"hours": [{
"day": "Daily",
"time": "11:00AM - 2:00AM"
}]
},
{
"propCode": "foo12"
},
{
"propCode": "foo14"
},
{
"propCode": "foo14",
"hours": [{
"day": "Daily",
"time": "6:00AM - 6:00PM"
}]
},
{
"propCode": "foo12",
"hours": [{
"day": "Sunday-Thursday",
"time": "8:00AM - 6:00PM"
},
{
"day": "Friday-Saturday",
"time": "8:00AM - 7:00PM<br>"
},
{
"day": "<br>Adult Swim (21+)<br> Sunday-Thursday",
"time": "5:00PM - 6:00PM"
},
{
"day": "Friday-Saturday",
"time": "5:00PM - 7:00PM"
}]
},
{
"propCode": "foo15",
"hours": [{
"day": "Mon-Thu ",
"time": "9:00AM - 9:30PM
"
},
{
"day": "Fri-Sun ",
"time": "9:00AM - Midnight"
}]
},
{
"propCode": "foo16",
"hours": [{
"day": "Sun - Thurs:",
"time": "9:00AM - 5:00PM"
},
{
"day": "Fri - Sat:",
"time": "9:00AM - 6:00PM"
},
{
"day": "Slide",
"time": "Closed for the season"
}]
},
{
"propCode": "foo17",
"hours": [{
"day": "Friday",
"time": "10:30PM "
},
{
"day": "Saturday",
"time": "10:30PM "
}]
},
{
"propCode": "foo6"
},
{
"propCode": "foo14",
"hours": [{
"day": "Sunday - Friday",
"time": "9:00AM - 5:00PM"
},
{
"day": "Saturday",
"time": "9:00AM - 6:00PM"
}]
},
{
"propCode": "foo14",
"hours": [{
"day": "Closed for ",
"time": "Winter Season"
}]
},
{
"propCode": "foo12",
"hours": [["CLOSED"]]
},
{
"propCode": "foo18",
"hours": [{
"day": "Box Office Tue-Sat",
"time": "12:00PM - 8:00PM"
}]
},
{
"propCode": "foo19"
},
{
"propCode": "foo20",
"hours": [{
"day": "Monday - Thursday",
"time": "<br>12:00PM - 3:00AM"
},
{
"day": "Friday - Sunday",
"time": "<br>10:00AM - 3:00AM"
},
{
"day": "Live Music",
"time": ", 6:00PM - 10:00PM"
}]
},
{
"propCode": "foo6",
"hours": [{
"day": "Sunday:",
"time": "5:00PM - 1:00AM "
},
{
"day": "Monday - Thursday:",
"time": "5:00PM - 1:00AM "
},
{
"day": "Friday:",
"time": "5:00PM - 2:00AM "
},
{
"day": "Saturday:",
"time": "5:00PM - 1:00AM "
}]
},
{
"propCode": "foo16",
"hours": [{
"day": "Daily",
"time": "24 Hours"
}]
},
{
"propCode": "foo21",
"hours": [{
"day": "Mon-Sat",
"time": "10:00AM - 2:00AM"
},
{
"day": "Sun",
"time": "12:00PM - 2:00AM"
}]
},
{
"propCode": "foo10"
},
{
"propCode": "foo23",
"hours": [{
"day": "Open Daily <br>(Seasonally)",
"time": "11:00AM - 6:00PM"
}]
},
{
"propCode": "foo22",
"hours": [{
"day": "Daily",
"time": "11:00AM - 3:00AM"
}]
},
{
"propCode": "foo23",
"hours": [
{
"day": "Sun - Thurs:",
"time": "9:00AM - 5:00PM"
},
{
"day": "Fri - Sat:",
"time": "9:00AM - 6:00PM"
},
{
"day": "Slide",
"time": "Closed for the season"
}
]
}
]
}
注意此文件中的一个对象应代表 excel 中的一行。
我想在这里分享一个外部link(不确定我是否违反任何政策,如果是这样请纠正我)以便其他人也可以在需要时使用这些知识。
我的核心问题在 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
请在下面找一个link到这个论坛:
谢谢
我正在尝试转换(我是幂查询转换方面的新手)json 数据。我们的目标是合并和转换几个 json 文件以创建报告。 json 文件由我们的网络应用程序公开的不同提要提供。作为学习的一部分,我们尝试转换单个 json 文件。
但是我们 json 数据中的一个字段是 被 power query 识别为记录和列表类型的混合(电源查询中的一列显示列表和记录的混合)。
在这种情况下,我无法获取这些订单项的值。
任何解决此问题的建议都会非常有帮助
提前致谢
请查找样本 json :
{
"@timestamp": "27-11-2015 21:31:30 PM", "thingstodo": [{
"propCode": "foo1"
},
{
"propCode": "foo2"
},
{
"propCode": "foo3",
"hours": [{
"day": "Monday-Thursday",
"time": "2:00PM - 1:00AM"
},
{
"day": "Friday-Sunday",
"time": "10:00AM - 2:00AM"
}]
},
{
"propCode": "foo4"
},
{
"propCode": "foo5",
"hours": [{
"day": "Daily",
"time": "24 Hours"
}]
},
{
"propCode": "foo6",
"hours": [{
"day": "10am - 4am",
"time": "bar & lounge area"
},
{
"day": "12pm - 4am",
"time": "gaming area"
}]
},
{
"propCode": "foo7",
"hours": [{
"day": "Daily",
"time": "11:00AM - 1:00AM"
},
{
"day": "Happy Hour Daily",
"time": "4:00PM - 6:00PM"
}]
},
{
"propCode": "foo8"
},
{
"propCode": "foo9"
},
{
"propCode": "foo10",
"hours": [{
"day": "Sun-Thu",
"time": "10:00AM - 11:00PM"
},
{
"day": "Fri & Sat",
"time": "10:00AM - 12:00AM"
}]
},
{
"propCode": "foo11",
"name": "Atlantic City Deals and Packages",
"brand": "harrahs"
},
{
"propCode": "foo12"
},
{
"propCode": "foo13",
"hours": [{
"day": "Sun-Thu",
"time": "11:00AM - 1:00AM"
},
{
"day": "Fri-Sat",
"time": "11:00AM - 2:00AM"
}]
},
{
"propCode": "foo8",
"hours": [{
"day": "Daily",
"time": "11:00AM - 2:00AM"
}]
},
{
"propCode": "foo12"
},
{
"propCode": "foo14"
},
{
"propCode": "foo14",
"hours": [{
"day": "Daily",
"time": "6:00AM - 6:00PM"
}]
},
{
"propCode": "foo12",
"hours": [{
"day": "Sunday-Thursday",
"time": "8:00AM - 6:00PM"
},
{
"day": "Friday-Saturday",
"time": "8:00AM - 7:00PM<br>"
},
{
"day": "<br>Adult Swim (21+)<br> Sunday-Thursday",
"time": "5:00PM - 6:00PM"
},
{
"day": "Friday-Saturday",
"time": "5:00PM - 7:00PM"
}]
},
{
"propCode": "foo15",
"hours": [{
"day": "Mon-Thu ",
"time": "9:00AM - 9:30PM
"
},
{
"day": "Fri-Sun ",
"time": "9:00AM - Midnight"
}]
},
{
"propCode": "foo16",
"hours": [{
"day": "Sun - Thurs:",
"time": "9:00AM - 5:00PM"
},
{
"day": "Fri - Sat:",
"time": "9:00AM - 6:00PM"
},
{
"day": "Slide",
"time": "Closed for the season"
}]
},
{
"propCode": "foo17",
"hours": [{
"day": "Friday",
"time": "10:30PM "
},
{
"day": "Saturday",
"time": "10:30PM "
}]
},
{
"propCode": "foo6"
},
{
"propCode": "foo14",
"hours": [{
"day": "Sunday - Friday",
"time": "9:00AM - 5:00PM"
},
{
"day": "Saturday",
"time": "9:00AM - 6:00PM"
}]
},
{
"propCode": "foo14",
"hours": [{
"day": "Closed for ",
"time": "Winter Season"
}]
},
{
"propCode": "foo12",
"hours": [["CLOSED"]]
},
{
"propCode": "foo18",
"hours": [{
"day": "Box Office Tue-Sat",
"time": "12:00PM - 8:00PM"
}]
},
{
"propCode": "foo19"
},
{
"propCode": "foo20",
"hours": [{
"day": "Monday - Thursday",
"time": "<br>12:00PM - 3:00AM"
},
{
"day": "Friday - Sunday",
"time": "<br>10:00AM - 3:00AM"
},
{
"day": "Live Music",
"time": ", 6:00PM - 10:00PM"
}]
},
{
"propCode": "foo6",
"hours": [{
"day": "Sunday:",
"time": "5:00PM - 1:00AM "
},
{
"day": "Monday - Thursday:",
"time": "5:00PM - 1:00AM "
},
{
"day": "Friday:",
"time": "5:00PM - 2:00AM "
},
{
"day": "Saturday:",
"time": "5:00PM - 1:00AM "
}]
},
{
"propCode": "foo16",
"hours": [{
"day": "Daily",
"time": "24 Hours"
}]
},
{
"propCode": "foo21",
"hours": [{
"day": "Mon-Sat",
"time": "10:00AM - 2:00AM"
},
{
"day": "Sun",
"time": "12:00PM - 2:00AM"
}]
},
{
"propCode": "foo10"
},
{
"propCode": "foo23",
"hours": [{
"day": "Open Daily <br>(Seasonally)",
"time": "11:00AM - 6:00PM"
}]
},
{
"propCode": "foo22",
"hours": [{
"day": "Daily",
"time": "11:00AM - 3:00AM"
}]
},
{
"propCode": "foo23",
"hours": [
{
"day": "Sun - Thurs:",
"time": "9:00AM - 5:00PM"
},
{
"day": "Fri - Sat:",
"time": "9:00AM - 6:00PM"
},
{
"day": "Slide",
"time": "Closed for the season"
}
]
}
]
}
注意此文件中的一个对象应代表 excel 中的一行。
我想在这里分享一个外部link(不确定我是否违反任何政策,如果是这样请纠正我)以便其他人也可以在需要时使用这些知识。 我的核心问题在 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
请在下面找一个link到这个论坛:
谢谢