Power Query M函数(3)--数据类型转换、元数据及错误处理

浏览: 4542

封面.PNG

Power Query以往文章:

Power Query M函数(1)--数据类型及数据结构

PowerQuery M函数2--计算方式与运算符



数据类型转换:

 M函数有一类负责数据类型转换的函数,此类函数列表如下:

 

数值类型:


文本类型:



逻辑类型:



日期、时间、日期时间以及时区类型:





元数据(中继数据):

元数据是一种描述数据的数据,它可以用来描述数据属性等相关信息。元数据以记录的形式表示。元数据记录中的字段用来存储元数据值。从系统角度讲,其实每个值都有一个与其关联的元数据记录,当没有为某个值指定特定的元数据记录时,元数据记录为空(即没有字段的记录)。在实际应用中使用“值 meta [record]”的方式为一个值指定与其关联的元数据。下例就是为文本值“Mozart”指定“Rating”以及“Tags”元数据记录的方法。

 

例:为文本值"Mozart"关联元数据记录

"Mozart" meta [ Rating = 5,  

Tags = {"Classical"} ]

 

使用“Value.Metadata”函数可以将元数据记录中的值引用出来使用。下例就是将与“Mozart”值关联的元数据记录中的“Rating”字段中的值引用出来并付给“ComposerRating”使用的方法。

 

例:元数据记录值的引用方法

   Composer = "Mozart" meta [ Rating = 5, Tags ={"Classical"} ], 

   ComposerRating = Value.Metadata(Composer)[Rating]   // 5 

]

 

元数据不能被用来关联计算结果,比如当使用“&”运算符关联两个文本值时,得到的计算结果值的元数据记录为空。

可以使用“Value.RemoveMetadata”函数清空值中的元数据记录,使用“Value.ReplaceMetadata”函数修改值中的元数据记录内容。



错误处理:

在M函数中,当某个表达式无法得到正确的计算结果时我们可以用“error”来发生错误事件。用“error”发生的错误事件可以用“Try”表达式来获取,并对其进行处理及显示详细错误信息。

 

“Try”表达式:

“Try”表达式可以将由error发生的错误信息封装在一个记录内。下例就是使用“Try”处理由error发生的错误事件的案例。

 

例:

try error "negative unit count"

 

上例会生成一个由[HasError]、[Error]以及[Meesage]三个字段构成的记录,字段中的值用来对错误进行解释说明。


“Otherwise”运算符:

一般情况下上述案例中,“Try”表达式执行后产生的记录内容如下:

    HasError = true, 

    Error = 

        [ 

            Reason ="Expression.Error", 

            Message = "negative unitcount", 

            Detail = null 

        ] 

]

 

但我们也可以使用“otherwise”运算符来重新定义Try的显示结果。

 

例:

try error"negative unit count" otherwise 42    // equals 42


错误处理案例:

以下案例是一个Try的实际应用案例:

let Sales =  

        [  

        ProductName = "Fishing rod",   

            Revenue = 2000,  

            Units = 1000,  

            UnitPrice = if Units = 0 then error "No Units"  

                    else Revenue / Units  

        ],  

        textUnitPrice = try Number.ToText(Sales[UnitPrice]),  

    Label = "Unit Price: " &   

        (if textUnitPrice[HasError] then textUnitPrice[Error][Message]  

        else textUnitPrice[Value])  

in  

    Label


上述案例的执行结果为"Unit Price: 2",若将Sales记录中的Units改为0,则显示结果为"Unit Price: No Units"。



报名用数据说话-Excel BI商业智能分析零基础精讲课程系统学习Excel商业智能分析相关知识

推荐 0
本文由 李奇 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册