BigQuery 中的层次结构查询
Hierarchy Queries in BigQuery
我通过这种方式从 ControlM(调度程序)获得数据
PREDECESSOR_JOB_ID,SUCCESSOR_JOB_ID
XYZ,ABC
ABC,LMN
ABC,PQR
XYZ,EFG
EFG,STU
STU,TUV
STU,VWX
.
.
.
我看到很多解决方案都是从第一个节点开始,然后下降到最后一个节点。但这很可能会随着这些数据而散开。
我正在寻找一个扇入解决方案,我可以从任何端节点开始并走向第一个节点
在这种情况下,我正在寻找的答案是
ABC-->XYZ
LMN-->ABC-->XYZ
PQR-->ABC-->XYZ
EFG-->XYZ
STU-->EFG-->XYZ
TUV-->STU-->EFG-->XYZ
VWX-->STU-->EFG-->XYZ
考虑以下方法
with recursive iterations as (
select successor_job_id, predecessor_job_id, 1 pos from your_table
union all
select b.successor_job_id, a.predecessor_job_id, pos + 1
from your_table a join iterations b
on b.predecessor_job_id = a.successor_job_id
)
select successor_job_id || '-->' || string_agg(predecessor_job_id, '-->' order by pos) as jobs_path
from iterations
where not successor_job_id is null
group by successor_job_id
如果应用于您问题中的示例数据 - 输出为
我通过这种方式从 ControlM(调度程序)获得数据
PREDECESSOR_JOB_ID,SUCCESSOR_JOB_ID
XYZ,ABC
ABC,LMN
ABC,PQR
XYZ,EFG
EFG,STU
STU,TUV
STU,VWX
.
.
.
我看到很多解决方案都是从第一个节点开始,然后下降到最后一个节点。但这很可能会随着这些数据而散开。 我正在寻找一个扇入解决方案,我可以从任何端节点开始并走向第一个节点
在这种情况下,我正在寻找的答案是
ABC-->XYZ
LMN-->ABC-->XYZ
PQR-->ABC-->XYZ
EFG-->XYZ
STU-->EFG-->XYZ
TUV-->STU-->EFG-->XYZ
VWX-->STU-->EFG-->XYZ
考虑以下方法
with recursive iterations as (
select successor_job_id, predecessor_job_id, 1 pos from your_table
union all
select b.successor_job_id, a.predecessor_job_id, pos + 1
from your_table a join iterations b
on b.predecessor_job_id = a.successor_job_id
)
select successor_job_id || '-->' || string_agg(predecessor_job_id, '-->' order by pos) as jobs_path
from iterations
where not successor_job_id is null
group by successor_job_id
如果应用于您问题中的示例数据 - 输出为