我正在Excel 2013上使用Power Query将巨大的JSON文件(大于100Mb)转换为纯Excel工作表。
除一个字段外,所有字段均已正确转换,但是有一个特定字段被识别为记录。所有其他字段具有固定的文本值或用逗号分隔的值,因此转换非常容易,此字段内部具有JSON记录结构,因此“ Field”:“ Value”。
这是文件的摘录:
{
"idTrad": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"images": {
"1": "SE1.JPG",
"2": "SE2.JPG"
},
"date": "2018-09-22",
"category": "MD",
"value": "Original text",
"language": "IT",
"contexts": [
""
],
"label": "Translated text",
"variantes": "1,23,45,23,32,232,2315,23131",
"theme": [
"XX_XXX"
]
}
有问题的字段是“图像”,因为它被识别为记录,在结果表中我遇到这种情况:
[1]: https://i.stack.imgur.com/EnHow.png
到目前为止,我的查询是:
let
Source = Json.Document(File.Contents("filename.json")),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 développé" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"value", "contexts", "theme", "variantes", "category", "label", "language", "idTrad","images", "date"}, {"Column1.value", "Column1.contexts", "Column1.theme", "Column1.variantes", "Column1.category", "Column1.label", "Column1.language", "Column1.idTrad","Column1.images", "Column1.date"}),
#"Valeurs extraites" = Table.TransformColumns(#"Column1 développé", {"Column1.contexts", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
#"Valeurs extraites1" = Table.TransformColumns(#"Valeurs extraites", {"Column1.theme", each Text.Combine(List.Transform(_, Text.From), ","), type text})
in
#"Valeurs extraites1"
我想在图像字段中使用记录的文本表示形式,例如“ 1:SE1.JPG,2:SE2.JPG”,有什么想法吗?
答案 0 :(得分:0)
当然,您甚至可以一步一步完成!如果将记录转换为表(Record.ToTable),它将创建一个表,其中记录中的字段名称位于“名称”列中,而值位于“值”列中。这样,您可以从json文件中获取“ 1”,“ 2”等。从那里,您可以将列合并为所需的文本,然后像在其余列中所做的那样转换并合并列表。
=IF(AND(LEFT(C1,8)="https://", RIGHT(C1,4)=".jpg"),C1,"")
我认为Record.ToTable不会将其列名本地化,但也许可以通过先将记录转换为表以查看其作用来进行测试。
= Table.TransformColumns(#"Valeurs extraites1",{"Column1.images",
each
Text.Combine(
Table.ToList(
Table.CombineColumns(
Record.ToTable(_)
,{"Name", "Value"},Combiner.CombineTextByDelimiter(": ", QuoteStyle.None),"Merged")
)
, ", ")
})