- content
说明
peekResult(...) 用于在全部 sql 执行完成前,提前输出少量中间结果到前端或日志中。
适用场景:
- 长流水线调试——想看某一步的中间结果,但不想等整个流水线跑完。
- 前端进度展示——在耗时 sql 执行过程中,先推送部分数据让用户看到进度。
- 日志记录——把关键中间步骤的结果记录到任务日志。
语法
peekResult(子sql)
子sql是一条完整的 select 语句,peekResult会立即执行它并输出结果。- 子 sql 支持 mybatis 参数(
${param}/#{param})和@list}变量替换。
例子
-- 在长流水线中提前查看中间结果
select * from big_table where dt = '2026-01-01';
peekResult(select count(*) as cnt from @last);
-- 上面的结果会立即输出到前端/日志,不影响后续执行
select * from @last where amount > 100;
输出位置
- 任务日志:结果会写入当前任务的
TaskLog,最多输出 1000 行。 - 前端进度:如果当前有
JobStatus,结果会作为currentData推送到前端,最多 1000 行。 - 控制台:如果没有任务上下文,结果会通过
logger.info输出到控制台。
注意事项
peekResult不会消费或改变堆栈——它只是”偷看”一眼,不影响后续语句的数据流。- 输出结果有 1000 行的上限,超出的部分会被截断。
- 子 sql 会优先从查询缓存中获取数据,避免重复查询。