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商业智能分析相关知识