PQL 是一种跨数据源的过程化查询语言(Procedural Query Language),是一种运行在 JVM 上的中间件语言。PQL 的门槛极低,会 SQL 即可编写数据处理程序。PQL 旨在提供一种最简单的方式对数据处理过程的各种查询语句进行封装,让开发过程更专注于业务逻辑。PQL 中集成了大量附加功能,所有相关功能都可用一条语句实现,简单高效。
PQL 不仅可应用于数据开发(特别是多数据源场景下数据流转非常方便),还可应用于后端开发和模板引擎等场景,可极大简化代码,更简单的处理和呈现数据。PQL 清晰的代码格式易于规范开发流程,方便统一管理。
PQL 看起来很像存储过程。每条语句使用分号;
结尾,更多语法规则见PQL 基本语法
- PQL 的
Hello World
:
PRINT 'Hello World!';
- PQL 支持连接任意 JDBC 数据源并顺序执行 SQL 语句,例如:
OPEN mysql.qross;
INSERT INTO scores (name, score) VALUES ('Tom', 89);
UPDATE students SET age=18 WHERE id=1;
SELECT * FROM scores ORDER BY score LIMIT 10;
- 跨数据源数据流转非常轻松:
OPEN hive.cluster1;
GET # SELECT name, COUNT(0) AS amount FROM table1 GROUP BY name;
SAVE TO mysql.result;
PUT # INSERT INTO table2 (name, amount) VALUES (&name, #amount);
- 提供中间数据库缓存处理过程中的数据:
OPEN mysql.db1;
CACHE 'table1' # SELECT id, name FROM table1;
OPEN mysql.db2;
CACHE 'table2' # SELECT id, score FROM table2;
OPEN CACHE;
SELECT A.id, A.name, B.score FROM table1 A INNER JOIN table2 B ON A.id=B.id;
- 可无障碍使用 JSON 数据:
OUTPUT {
"data": ${{ SELECT * FROM table1 }},
"count": @COUNT_OF_LAST_SELECT
};
SET $name := SELECT name FROM table1 WHERE id=#{id};
SELECT * FROM table2 WHERE name=$name AND create_time>=${ @NOW MINUS 1 DAY }
-> INSERT IF EMPTY (name, score) VALUES ('N/A', 0);
IF $i > 1 THEN
PRINT 'greater than 1.';
ELSIF $i < 1 THEN
PRINT 'less then 1.';
ELSE
PRINT 'equals 0.';
END IF;
FOR $id, $name IN (SELECT id, name FROM table3) LOOP
PRINT $id;
PRINT $name;
SLEEP 1 SECOND;
END LOOP;
REQUEST JSON API 'http://www.domain.com/api?id=1'
PARSE '/data' AS TABLE;
SEND MAIL "test mail"
CONTENT "hello world"
TO "user@domain.com";
OPEN mysql.db1;
GET # SELECT * FROM table1;
SAVE AS NEW EXCEL "example.xlsx" USE TEMPLATE "template.xlsx";
PREP # INSERT INTO sheet1 (A, B, C) VALUES ('姓名', '年龄', '分数');
PUT # INSERT INTO sheet1 ROW 2 (A, B, C) VALUES (id, ‘#name’, &title);
PQL 的最大的特点就是“简单”,可以在你的任何 Java 或 Scala 项目中使用,也可以保存为独立的脚本文件运行。更多更强大的功能请参阅各语句对应的文档。
OneApi 是 PQL 的一种应用,可以通过 PQL 编辑 Web 服务的接口,以帮助后端工程师减少大量的重复代码编写工作,快速实现业务逻辑。请参阅 OneApi 文档获取更多信息。
Voyager 是 PQL 的另一个应用,和 OneApi 一样,也是应用于 Web 开发。其同类是 FreeMarker 或 Thymeleaf,不过更简单直接,不需要记各种标记语法,直接在网页 HTML 代码中写 SQL 语句进行查询并输出数据。请参阅 Voyager 文档获取更多信息。
Keeper 是一个轻量级但功能强大的任务调度工具,支持运行 PQL 任务,也支持通过 PQL 扩展 Keeper,如事件、依赖等。请参阅 Keeper 文档获取更多信息。
Master 是一个综合各种数据开发相关功能的管理平台,可以在上面编写 PQL 并直接运行、部署调度任务、管理服务接口等。请参阅Master文档获取更多信息。
-
PQL 快速入门
-
PQL 基础
-
数据流转
-
输出文件
-
PQL 中的语句
-
分支和循环
-
更优雅的数据操作
-
PQL高级特性
-
自定义函数
-
扩展操作
-
其他语言相关
-
附录
PQL 语言免费使用,有任何问题均可联系作者或留言。PQL 每月发布一个新版本,最新版本 1.3.0。
官方网站 www.qross.cn
作者邮箱 wu@qross.io