Power Query Editor (Excel) - 错误处理 API 提要中的无数据
Posted
技术标签:
【中文标题】Power Query Editor (Excel) - 错误处理 API 提要中的无数据【英文标题】:Power Query Editor (Excel) - error handling no data in API feed 【发布时间】:2020-05-12 11:37:48 【问题描述】:我在 Excel 中有一个运行良好的 API 提要,但有时当 JSON API 提要中没有数据时,我会收到一个错误框,然后当 API 数据返回时停止 excel 提要工作。 我尝试了各种错误处理但没有成功(错误是“我们无法将 Record 类型的值转换为 List 类型” - 由于没有数据而导致)。任何帮助将不胜感激。
没有数据时的 API 馈送:
"data" : []
当前代码:
let
Source = try Json.Document(Web.Contents("https://link.com/link.json"))
otherwise "1","2","3",
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), 1, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", "cola", "colb", "colc"),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Column1","Column1.cola", Int64.Type, "Column1.colb", Int64.Type, "Column1.colc", Int64.Type),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type","Column1.cola", "A", "Column1.colb", "B", "Column1.colc", "C")
in
#"Renamed Columns"
【问题讨论】:
我认为try ... otherwise ...
可能为时过早,因为Json.Document
和Web.Contents
可能不是发生错误的地方。错误可能发生在Table.FromList
期间,因为它需要一个列表,但在没有数据时会给出记录。两个问题:#1 当没有数据时,您希望表格是什么样的? #2 有数据时,Feed 的响应是什么样的? (可以替换提要中的敏感/私人内容,这只是给出答案所需的结构。)
另外,您可以使用Table.FromRecords
(而不是Table.FromList
和Table.ExpandRecordColumn
)。
感谢您的回复。 try ... otherwise ...'
处理提要完全断开的时间,即网络连接断开。您是对的,问题是下一部分 - 已收到提要但不包含数据。我尝试了 FromRecords 但不幸的是仍然存在同样的问题。我可以再做一个try otherwise
但没有成功如何处理othewise
部分
当提要没有数据时,我只需要一个空表,即没有弹出错误消息。没有数据的提要是"data" : []
,收到的错误消息是“[Expression.Error] 我们无法将 Record 类型的值转换为 List 类型”。
【参考方案1】:
我设法用 2 个 try 语句解决了这个问题:
-
第一个处理网络连接断开时的错误。
第二个处理提要工作但不包含数据时的错误(该解决方案创建一个空表 行)。
let
Source = try Json.Document(Web.Contents("https://link.com/link.json"))
otherwise "1","2","3",
#"Converted to Table" = try Table.FromList(Source, Splitter.SplitByNothing(), 1, null, ExtraValues.Error) otherwise Table.FromList("1", Splitter.SplitByNothing(), 1, null, ExtraValues.Error) ,
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", "cola", "colb", "colc"),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Column1","Column1.cola", Int64.Type, "Column1.colb", Int64.Type, "Column1.colc", Int64.Type),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type","Column1.cola", "A", "Column1.colb", "B", "Column1.colc", "C")
in
#"Renamed Columns"
【讨论】:
以上是关于Power Query Editor (Excel) - 错误处理 API 提要中的无数据的主要内容,如果未能解决你的问题,请参考以下文章