在Power Query的M语言中,能够支持的数据类型种类非常有限,在M语言中支持两大类型数据。
■ 基本数据类型:基本数据类型是标准的单一的数据类型,每种数据类型定义了不同的单一对象,例如,2是数值型,而"2"是字符型。
■ 组合数据类型:组合数据类型指的是包含一个系列数据的组合,但是数据类型并不统一。Power Query的组合数据类型中列表类型和记录类型都是非常典型的组合数据类型。
表3.1所示为目前Power Query所支持的基本数据类型。
表3.1 Power Query支持的基本数据类型
Binary 类型是机器中的二进制数据类型。数据保存在计算机磁盘存储器的方式不同于在编辑器编辑的方式,所有保存在计算机磁盘的数据都是二进制数据类型,并不能直接使用,在Power Query中进行M语言解析之后,再通过不同类型的文件解析函数进行内容解析才能获取到正确的数据。在默认情况下进行数据导入之后,都会将相应的二进制数据进行解析。如果希望获取的是纯粹的Binary类型数据,就需要通过高级编辑器编写M语言进行操作了。这里使用File.Contents函数(注意大小写敏感)来进行数据的实际读取,以E盘文件json.json为例,如图3.8所示。
图3.8 使用File.Contents方法进行数据读取
在使用M语言代码进行数据读取的过程中,Power Query不会自动地将读入的数据进行类型判断,Excel或Power BI会尝试自动进行类型解析,解析失败后可以手动选择相应类型进行再解析。图3.9所示为Binary的数据解析结果。
图3.9 使用函数对Binary数据进行解析
日期类型是在M语言中进行格式定义时非常常见的数据类型,它是以时间进行数据显示的一种格式,通常用于Power Query的日期格式设置。在Power Query中也可以使用date关键字进行日期格式数据的生成,在进行日期设置时可使用#date修饰符设置格式,代码如下所示。
日期时间类型不同于日期类型,日期类型只包含了日期数据,而日期时间类型除了包含日期数据之外也会有时间数据,以下为日期时间数据类型的具体格式:2021-01-01 01:00:00。通常我们通过#datetime关键字来设置日期时间格式,下面为利用#datetime关键字生成日期时间类型的方法。
日期时间时区类型是相对比较特殊的数据类型,当前世界划分为24个时区,每一个时区在同一时间点所对应的时间会有所不同,在特殊的场景下加上时区类型能够获取到当前时区的具体时间,日期时间时区类型数据的格式如下:5/23/2015 12:00:00 AM-08:00。在Power Query中可以通过#datetimezone关键字来进行日期时间时区的定义。相比DateTime的格式设置,日期时间时区的设置多了两个参数:时区偏移小时和时区偏移分钟。
这里为什么会有偏移分钟参数呢?是因为在地球上有些时区会相差半个小时,下面为具体的参数设置。
时间类型属于日期时间类型的子类型,数据格式和日期时间类型不同,数据仅仅包含时间的数据,即时、分、秒。时间类型数据格式如下:12:34:12 PM。这里可以利用#time修饰符来构建时间类型数据。
这是在Power Query中最为奇怪的数据类型,很多没有了解过Power Query的朋友对这个名字也感觉非常陌生。它的格式和日期时间类型类似,但是它的作用不是生成日期时间,而是在生成数据后与日期实现数据运算。在实际应用中,可以通过标签#duration 来定义持续时间,定义持续时间的语法如下。
逻辑类型也是Power Query中M语言支持的一种数据类型,通常逻辑数据类型用于数据结果和过程中的判断,逻辑类型的数据只有两种结果:true和false。
Null类型是非常难以描述的一种数据类型,从概念上来描述Null非常难,翻译成中文就是空的意思,结果只有一个值,就是null。
在M语言中,数值类型统称为Number类型,而Number 类型包含了正整数、零、负整数、小数等,下面都是M语言的Number类型。
■ 1:标准正整数
■ 1.4:标准小数
■ 0:整数0
■ 1.4e-5:基于科学记数法的小数
文本类型是在Power Query中应用最多的数据类型,在进行详细的数据类型定义之前,其实数据都是文本类型。