Excel Power Query传递表至函数报错:无法将Table转为Function
问题解决:Power Query类型转换错误(Table转Function)
错误原因
你调用fxRetry(Insider([Value]))时,Insider([Value])会直接执行并返回Table类型的结果,但fxRetry函数要求传入的参数是Function类型,因此触发类型转换错误。
修改步骤
1. 修正fxRetry的调用代码
将直接执行的Insider([Value])包装成一个无参函数,这样传给fxRetry的是函数对象,而非执行后的表:
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "Custom", each fxRetry(() => Insider([Value]))),
2. 优化fxRetry函数逻辑
原函数中用Binary.Buffer处理Table是错误的(Binary.Buffer仅适用于二进制数据),直接通过try捕获函数执行结果即可:
let Source = (MyCall as function) => let CallResult = try MyCall(), Output = if CallResult[HasError] = false then CallResult[Value] else Function.InvokeAfter(() => @fxRetry(MyCall), #duration(0,0,0,5)) in Output in Source
逻辑说明
- 包装后的
() => Insider([Value])是一个延迟执行的函数,fxRetry调用时会先执行这个函数,再判断是否需要重试。 try MyCall()会返回包含HasError和Value的记录,通过判断HasError值决定直接返回结果还是延迟5秒后递归重试。
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

