如何为Snowflake任务依赖表添加successor(后继任务)列?
实现方案
可以通过自左连接的方式,将表与自身关联,匹配每个任务的后继任务:
假设你存放任务依赖数据的表名为task_deps,执行以下SQL即可得到包含successor列的结果:
SELECT t1.name, t1.predecessor, t2.name AS successor FROM task_deps t1 LEFT JOIN task_deps t2 ON t1.name = t2.predecessor;
逻辑说明
- 主表
t1作为基准,取每个任务的name和predecessor - 左连接自身表
t2,关联条件是t1的任务名等于t2的前置任务名,这样t2.name就是t1任务的后继任务 - 对于没有后继任务的任务(比如
tbl_merge_tsk),左连接会返回null,完全符合需求格式
如果需要永久给表添加successor列并填充数据,可以分两步执行:
- 添加列:
ALTER TABLE task_deps ADD COLUMN successor VARCHAR;
- 填充数据:
UPDATE task_deps t1 SET successor = ( SELECT name FROM task_deps t2 WHERE t2.predecessor = t1.name );
内容的提问来源于stack exchange,提问作者user19184678
相关产品推荐
相关产品推荐

