PowerQuery技巧之数据类型

  • 格式:pdf
  • 大小:81.78 KB
  • 文档页数:2

数据类型
数据类型:
在excel中,我们经常使用如="NO."&1得到"NO.1",但是如果在PQ中这么操作,就会发现报错了。

这是因为PQ对数据类型非常严格,数字就是数字,文本就是文本,数字和文本不能放一起运算。

在PQ中数据类型比较多,如下:
类型举例
Null null
Logical true false
Number0 1 -1 1.5 2.3e-5
Time#time(09,15,00)
Date#date(2017,06,30)
DateTime#datetime(2017,06,30,09,15,00)
DateTimeZone#datetimezone(2017,06,30,09,15,00,09,00)
Duration#duration(0,1,30,0)
Text"hello"
Binary#binary("AQID")
List{1,2,3}
Record[A=1,B=2]
Table#table({"X","Y"},{{0,1},{1,0}})
Function(x)=>x+1
Type type {number} type table [A=any,B=text]
如果需要对数据类型转换,则需要用到转换函数,如要得到"NO.1",需要= "NO."&Text.From(1)。

再比如,日期是2017/6/1,要往后推3天,如果直接+3肯定是错的。

因为日期是date类型,3是number类型,不同的类型不能放在一起运算,需要= Date.AddDays(#date(2017,6,1),3)。

然而有时候类型不同也是可以运算的,比如= #date(2017,6,1)+#duration(3,0,0,0),等价于前面的公式,虽然一个是date类型,一个是duration类型,但都是属于日期时间类的,所以可以这么做。

关于#:
你可能会问,这个#是什么东西?
在PQ中,某些数据类型、结构、符号等之前需要加#,比如#date,#table,#(lf),#shared等。

看到这你可能要晕了,好好的搞这么复杂干嘛?
试想下要表示2017/6/1这个日期,如果不加#,写成= date(2017,6,1),那么PQ会以为date是一个自定义函数,结果找不到这个函数的表达式,就会报错,所以得加上#声明这是一个日期,而不是其他。

的格式,每个单词首字母大写。

点之前表示函数类别,点之后表示函数功能,比如bine和bine,虽然功能都是合并,但是作用的对象类型不一样。

在帮助说明中,给出了该函数说明、参数及案例等,这里需要注意:
每一个参数必须严格按照指定类型,否则就会报错。

比如= bine("NO.","1"),而第一参数要求的类型是。