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

标签:
it教育 |
分类: PowerQuery |
http://s16/mw690/005uckTVzy7bkaPBlxlaf&690Query
http://s3/mw690/005uckTVzy7bcDV1mYW42&690Query
数据类型转换
M函数有一类负责数据类型转换的函数,此类函数列表如下:
数值类型:
函数 |
描述 |
Number.FromText(text as text) as number |
将文本型转换为数值型 |
Number.ToText(number as number) as text |
将数值型转换为文本型 |
Number.From(value as any) as number |
将参数值转换为数值 |
Int32.From(value as any) as number |
将参数值转换为32位整数值 |
Int64.From(value as any) as number |
将参数值转换为64位整数值 |
Single.From(value as any) as number |
将参数值转换为单一数值 |
Double.From(value as any) as number |
将参数值转换为双数值 |
Decimal.From(value as any) as number |
将参数值转换为小数值 |
Currency.From(value as any) as number |
将参数值转换为货币值 |
函数 |
描述 |
Text.From(value as any) as text |
将参数值转换为文本值 |
逻辑类型:
函数 |
描述 |
Logical.FromText(text as text) as logical |
将文本值转换为逻辑值 |
Logical.ToText(logical as logical) as text |
将逻辑值转换为文本值 |
Logical.From(value as any) as logical |
将参数值转换为逻辑值 |
日期、时间、日期时间以及时区类型:
函数(Date\DateTime\DateTimeZone) |
描述 |
.FromText(text as text) as date, time, datetime, or datetimezone |
将文本值转换为日期时间类数值 |
.ToText(date, time, dateTime, or dateTimeZone as date, time, datetime, or datetimezone) as text |
将日期时间类数值转换为文本值 |
.From(value as any) |
将参数值转换为日期时间类数值 |
.ToRecord(date, time, dateTime, or dateTimeZone as date, time, datetime, or datetimezone) |
将日期时间类数值转换为包含各部分的记录 |
元数据(中继数据):
元数据是一种描述数据的数据,它可以用来描述数据属性等相关信息。元数据以记录的形式表示。元数据记录中的字段用来存储元数据值。从系统角度讲,其实每个值都有一个与其关联的元数据记录,当没有为某个值指定特定的元数据记录时,元数据记录为空(即没有字段的记录)。在实际应用中使用“值 meta [record]”的方式为一个值指定与其关联的元数据。下例就是为文本值“Mozart”指定“Rating”以及“Tags”元数据记录的方法。
例:为文本值"Mozart"关联元数据记录
"Mozart" meta [ Rating =
5,
Tags = {"Classical"} ]
使用“Value.Metadata”函数可以将元数据记录中的值引用出来使用。下例就是将与“Mozart”值关联的元数据记录中的“Rating”字段中的值引用出来并付给“ComposerRating”使用的方法。
例:元数据记录值的引用方法
[
]
元数据不能被用来关联计算结果,比如当使用“&”运算符关联两个文本值时,得到的计算结果值的元数据记录为空。
可以使用“Value.RemoveMetadata”函数清空值中的元数据记录,使用“Value.ReplaceMetadata”函数修改值中的元数据记录内容。
错误处理:
在M函数中,当某个表达式无法得到正确的计算结果时我们可以用“error”来发生错误事件。用“error”发生的错误事件可以用“Try”表达式来获取,并对其进行处理及显示详细错误信息。
“Try”表达式:
“Try”表达式可以将由error发生的错误信息封装在一个记录内。下例就是使用“Try”处理由error发生的错误事件的案例。
例:
try error "negative unit count"
上例会生成一个由[HasError]、[Error]以及[Meesage]三个字段构成的记录,字段中的值用来对错误进行解释说明。
“Otherwise”运算符:
一般情况下上述案例中,“Try”表达式执行后产生的记录内容如下:
http://s2/mw690/005uckTVzy7bkc3zLah51&690Query
但我们也可以使用“otherwise”运算符来重新定义Try的显示结果。
例:
try error "negative unit
count" otherwise 42
错误处理案例:
以下案例是一个Try的实际应用案例:
let Sales =
in
上述案例的执行结果为"Unit Price: 2",若将Sales记录中的Units改为0,则显示结果为"Unit Price: No Units"。