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.DocumentWeb.Contents 可能不是发生错误的地方。错误可能发生在Table.FromList 期间,因为它需要一个列表,但在没有数据时会给出记录。两个问题:#1 当没有数据时,您希望表格是什么样的? #2 有数据时,Feed 的响应是什么样的? (可以替换提要中的敏感/私人内容,这只是给出答案所需的结构。) 另外,您可以使用Table.FromRecords(而不是Table.FromListTable.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 提要中的无数据的主要内容,如果未能解决你的问题,请参考以下文章

Excel power query 逆透视

Excel 曝Power Query安全漏洞

Excel Power Query导入MySQL数据

Excel Power Query 索引列

Excel 表之间的组合的 Power Query 是啥?

使用 Power Query 从 Excel 缩进中提取层次结构