【问题标题】:Power Query Editor (Excel) - error handling no data in API feedPower Query Editor (Excel) - 错误处理 API 提要中的无数据
【发布时间】: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 类型”。

标签: json excel api powerquery


【解决方案1】:

我设法用 2 个 try 语句解决了这个问题:

  1. 第一个处理网络连接断开时的错误。
  2. 第二个处理提要工作但不包含数据时的错误(该解决方案创建一个空表 行)。

    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"
    

【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多