PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
PQL 构建了一个缓冲区用来保存GET语句或PASS语句获取的数据,以方便将这些数据更新到目标数据源或者将数据输出到其他地方。在 SAVE 语句中,已经展示了 GET 语句的基本用法。例如从当前数据源获取数据:
缓冲区的结构其实就是一个二维表格,这个二维表格将每次 GET 到的数据UNION ALL
到一起。
也可以从多个数据源 GET 数据。
无论 GET 多少次,缓冲区中只会有一个数据表。 强烈建议每次 GET 数据结构完全一致,如果不一致在 PUT 数据或输出时有可能产生与预期不一样的结果。GET 语句不仅支持 SELECT 语句,理论上支持任何语句,如果语句返回的不是二维表格,将自动转成表格。
以上示例中,Redis 的 HGETALL 命令返回的是一个 Hash 结构数据,类似于 Json 中的对象结构,在 PQL 中是一个数据行,可以理解为是二维表格中的某一行,有多个键值对。PQL 自动将这个数据行转成一行的表格,键名即表格中的字段名。GET 也可以将其他集合数据结构放到缓冲区中。
GET 语句将上面的数据转成一个九行一列的表格,字段名默认为item
。在保存到缓冲区之间可以会数据进行再加工。
上面示例中,第一个 GET 在查询结果中增加了一行数据,然后再保存到缓冲区。第二个 GET 将取到的 Hash 结构的数据 行转列 成两列的表格,列表分别为name
和score
。->
之后的内容称为 Sharp 表达式,更多相关操作见对应章节。GET 可以将单值也转成表格放进缓冲区,默认列名为value
,但是这个应用场景非常少。
在 GET 完成之后,有几个全局变量可用:
@COUNT_OF_LAST_GET
最后一次 GET 的数据量(表格行数),可简写为@COUNT
@TOTAL_COUNT_OF_RECENT_GET
缓冲区中的数据总量,可简写为@TOTAL
@BUFFER
可以通过这个全局变量访问缓冲区@COUNT_OF_LAST_SELECT
如果 GET 语句中使用 SELECT 查询,则这个变量也可以得到 GET 的数据量,可简写为@ROWS
特别注意
UNION ALL
的关系,如果没遇到 PUT 或其他数据输出操作,会一直累加下去; 第一次 PUT 之后,表示 GET 已经完成了这次工作,可以将这次缓冲的数据清掉了,但这时仍可以执行多次 PUT。再次使用 GET,即会清空缓冲区的数据并开始新一轮的 GET。如果没有后续的 GET 语句,PQL 会在运行完成时清空缓冲区。UNION ALL
操作,可以将数据临时保存到中间内存数据库,见 CACHE 语句。参考链接