Power Query出错分析、异常处理(error)

Power Query M语言中,使用error表示计算表达式处理过程中的异常错误。

M语言中的异常,一般是由运算符和函数遇到错误条件,或使用了错误表达式导致的。

一、Power Query的常见错误

(1)函数输入了错误的参数:Expression.Error:无法将值XXX转换为类型XXX

函数Number.ToText实现将数字类型转换成文本类型的功能。输入参数应是数字类型,但下例输入参数的却是文本,导致出错。

let
    result = Number.ToText("文本")
in
    result

(2)表达式类型错误:Expression.Error:无法将运算符XXX应用于类型XXX和XXX

表达式+应用于数字的相加,下例却用作文本的相加,导致出错。

let
    result = 1+"文本"
in
    result

(3)无法识别名称(大小写错误,拼写错误):Expression.Error:无法识别名称XXX

比照常见错误(1)中的函数名,函数名number.totext没有按大小写正确输入,导致出错。

let
    result = number.totext("文本")
in
    result

(4)数据转换出错:DataFormat.Error:无法转换成XXX

销售金额列转换成数字类型,但其中包含了文本数据,导致导致出错

let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"销售金额", type number}})
in
    更改的类型

二、M语言中的异常处理(Error)

可以使用try表达式来测试、分析、处理错误异常。当发生某一错误时,try表达式可以指定一个值,此值可用于指示错误发生的原因。

1Try表达式结构:

tryResult = try 可能发生异常的语句 otherwise 发生错误时的结果值

2try表达式返回的结果

当错误没有发生时

Try返回一个记录record,包含字段HasErrorValue

其中HasError的值为FALSEValue是“可能发生异常的语句”的计算结果

当错误发生时

因为计数1”列不存在,表达式计算出错。

Try返回一个记录record,包含字段HasErrorError

其中HasError的值为TRUEError是一个记录record

展开Error,会看到错误信息的详细记录,包括字段ReasonMessageDetail

其中Message字段说明了错误的信息(已经是中文提示的,一般比较好理解)

3)搭配otherwise时,try表达式返回的结果

当错误没有发生时

返回了“可能发生异常的语句”的计算结果。

与没有搭配otherwisetry语句相比,不需要再通过返回结果的Value字段再去读取了。语句表达得更加简单、紧凑。

当错误发生时

因为计数1”列不存在,表达式计算出错。

计算结果返回了otherwise后的值。

三、使用try表达式处理异常

(1)增强代码容错性

异常发生后,程序的执行会中断在异常位置,后面的代码就不会执行了。因此好的代码需要通过异常处理机制,增加健壮性,处理无法预判的状况。

Power Query中,通过上述的try表达式,即可实现异常的抛出及处理。

(2)自定义抛出异常

根据实际使用,可以自定义抛出的异常信息,使用error加记录格式即可

let
    result = (if  (try 1+"文本")[HasError]
                    then error [Reason="运算错误",
                                Message="加法运算出错",
                                Detail="只能进行数字相加"]
                    else 1+1)
in
    result

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值