PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
编写 PQL 目的是为了封装整个数据处理过程,让开发人员更专注于业务逻辑,尽可能的少编写与数据处理无关的代码。所以,数据处理过程中的 SQL 语句仍然是 PQL 的核心,而PQL 主要功能是把数据处理中的 SQL 语句组织起来。
上面的示例做的工作如下:
上面示例中,只有OPEN
语句、两个GET #
和一个PUT #
是 PQL 的元素,其他的都是原生 SQL 语句。PQL 就是通过这些附加在 SQL 之上的元素将多个 SQL 语句组织起来。这些元素书写简单,但功能强大。
PQL 对原生的 SQL 语句不做任何解析,会将恢复后(有时会在 SQL 中嵌入一些内容,如变量)提交到对应的数据源执行,再将结果保存输出。在 PQL 中,可以在 SQL 中嵌入的常用元素如下:
详见见附录:完整的嵌入规则表,也会在对应章节进行详细介绍。
在 PQL 中,SQL 语句被分成两类,一类是查询语句,比如SELECT
和SHOW
,执行结果一个二维表格; 另一类是非查询语句,比如INSERT
、UPDATE
、DELETE
等,执行结果是一个整数,表示数据库受影响的行数。SQL 执行的结果会被保存在全局变量或者缓冲区中,以供再计算或者输出。涉及到的全局变量如下:
@COUNT_OF_LAST_SELECT
最后一次SELECT语句的结果集数量,简写为@ROWS
。@AFFECTED_OF_LAST_NON_QUERY
最后一次非查询语句影响数据库的行数,简写为@AFFECTED_ROWS
。其他全局变量见对应章节。
PQL 虽然不对 SQL 语句进行解析,但是会通过 SQL 语句的第一个单词来确定语句的类型,以确定执行什么类型的操作。在某些极个别情况下,PQL 也无法判断 SQL 语句是查询语句还是非查询语句。如 Hive 的 SELECT 查询语句可以以FROM
开头,阿里 AnalyticDB 有时以WITH
开头(子查询),甚至以 /* .. */开头(用于设置参数)。PQL 提供了一种简单的方法解决问题,就是在语句前加类型前缀,例如:
是什么类型的语句就加什么前缀就好,其中的井号#
不能省略。
无论是查询语句还是非查询语句都属于“有返回值的语句”,这类语句有很多其他应用方式,详见PQL中有返回值的语句。
参考链接