PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
PQL 像其他语言一样也有自己的数据类型,不过在 PQL 中,数据类型不需要显式声明。在多数据情况下,使用者并不需要关心变量的数据类型,解释器会自动识别和转化。
PQL 数据类型分为三类:基本数据类型、复合数据类型和扩展数据类型。基本数据类型包括整数、小数、字符串、日期时间、布尔和正则表达式; 复合数据类型包括数组、数据行、 数据表; 扩展数据类型使用非常少,可以理解为 Java 的类,先不做介绍。
整数不区分整形和长整型,所有整数都以长整形存储。
同样,小数也不区分单精度数和双精度数,所有小数都以双精度数存储。
与其他语言的字符串意义相同。
字符串可以使用单引号包围也可以使用双引号包围,如"hello 'world'"
或'hello "world"'
,即单引号字符串中的双引号或双引号字符串中的单引号都不需要转义。字符串使用反斜杠\
作为转义字符。
"hello \"world\""
或'hello \'world\''
。\
都需要转义。如"c:\\io.Qross\\PQL"
\r
、换行符\n
、制表符\t
等特殊字符与其他语言一致。如"\n"
。像 Scala 和 Javascript 一样,PQL 提供富字符串提供各种嵌入功能,详见富文本字符串。字符串相关操作方法详见 Sharp表达式
PQL 不区分日期类型和时间类型,统一表示为日期时间类型。日期时间类型的文本格式为yyyy-MM-dd HH:mm:ss
,如2020-08-01 22:02:37
。
0
,如2020-08-15
等同于2020-08-15 00:00:00
。yyyyMMddHHmmss
格式,但是只有在进行操作时才会转换,详见日期时间相关的 Sharp 表达式。MINUS DAYS
和GET HOUR
,详见 Sharp 表达式布尔类型主要用于判断条件式的值,true
和false
是可选的两个值(不区分大小写)。
与其他语言不同的是,当做为条件判断时,系统会自动识别要判断的值是否能转化为布尔值。转化规则如下:
'yes'
, 'true'
, 'on'
, 'ok'
转换为 true
,字符串 'no'
, 'false'
, 'off'
转换为 false
。0
转化为true
,小于等于0
转换为false
。true
,为空转化为false
。正则表达式在 PQL 中使用较少,主要用于字符串匹配。
格式与字符串完全一致,进行操作时解释器会自动判断类型。语法规则与其他语言一致,请查阅网络上的其他文章,注意不区分大小写请在正则表达式前面加(?i)
。相关的操作方法请参见 Sharp 表达式。
数组也可以称为列表,没有其他语言中的各种严格限制。数组概念和 Json 中的数组一致,也可以理解为是表格中的一列。
数组在 PQL 中会经常用到。可以使用 FOR 语句进行遍历。
数组不是定长的,可任意增减元素,数组操作见 Sharp 表达式。
数据行可以理解为 Json 中的对象结构或者 HashMap,但数据行字段的名称只能为字符串,且每个字段均有数据类型,可以保存不同类型的值。
可使用.
属性规则访问数据行的值。如$row.name
。数据行中的字段名不区分大小写,建议使用时小写。详见集合类型的元素访问
PQL 是一种数据处理语言,二维表格是数据处理中最常用的数据结构,PQL 提供了一种功能强大的表格数据结构。简单的可以理解为是数据行的数组,其输出也是一个 Json 的对象数组。
可以使用 FOR 循环对表格进行遍历。
或者
数据表中的字段名不区分大小写,数据表相关操作参见 Sharp 表达式
与数据或列表类似,数组中的值允许重复,但哈希列表中的值不允许重复,且哈希列表的元素是无序的。哈希列表在 PQL 中应用非常少,不能直接声明,只能通过数组转化而来。所有操作跟数组完全相同,不再赘述。
扩展数据类型将在未来版本中支持。
参考链接