SuperAPI AI 工具集

pg-durable-sql

数据与分析

查看项目

更新于 10-16 00:31

技能介绍

用途:生成正确、符合习惯的 pg_durable 持久化函数 SQL,使用 df.* 模式函数与操作符构建函数图。

主要能力:操作符包括 ~>(顺序)、|=>(命名捕获)、&(并行等待全部)、|(竞态取先完成)、?> 与 !>(条件分支)、@>(前缀无限循环)。函数涵盖节点创建(df.sql、df.sleep、df.wait_for_schedule、df.http、df.wait_for_signal)、控制流(df.seq、df.as、df.join、df.join3、df.race、df.if、df.if_rows、df.loop、df.break)、执行管理(df.start、df.cancel、df.signal、df.status、df.result、df.explain)、变量(df.setvar、df.getvar、df.unsetvar、df.clearvars)与监控(df.list_instances、df.instance_info、df.instance_nodes、df.instance_executions、df.metrics)。

必要用法:所有 DSL 表达式是 TEXT,返回 JSON 编码的 TEXT 函数图;仅 df.start() 执行。普通 SQL 字符串自动包装为 SQL 节点,无需 df.sql()。节点内单引号需双写,如 'SELECT * FROM orders WHERE status = ''pending'''。df.setvar() 必须在 df.start() 之前调用,变量在启动时快照且执行期间不可变。两种变量语法不可混用:{name} 来自 df.setvar,$name 来自 |=> 结果捕获。@> 是前缀操作符,写在循环体之前。并行分支与顺序组合时需用括号明确分组。df.start() 立即返回 8 字符实例 ID,不阻塞等待完成。

适用场景:顺序 ETL、变量捕获复用、并行扇出/扇入、带超时竞态、条件分支、无限循环与心跳、带 break 的循环、可容错循环、cron 定时任务、HTTP 请求、信号审批流、多数据库执行。

限制:df.start() 的 transaction_mode 为 'caller' 或 'new','new' 在独立会话运行、可存活于调用方回滚,但该会话仅见已提交行,未提交的 df.setvar 值不会被捕获,且在工作流内被拒绝,未知值会报错,应避免逐行高扇出并保证效果幂等。df.loop 的 continue_on_failure 为实验性语法,可能变化。条件真值按首行首列判断,建议使用显式布尔表达式。常见错误包括引号未双写、变量语法混用、在工作流内调用 df.setvar、@> 位置错误、并行分支未加括号、在 DSL 内使用 df.start、误以为 df.start 阻塞。