TD迁移 teradata qualify函数语法转换工具

 工具下载链接:

https://pan.baidu.com/s/11jwAWkVM1zXN1Iwv3MJaDg
提取码:qftf

转换前:

SELECT 	ETL_SYSTEM,
        ETL_JOB,
		JOB_TYPE,
		LAST_TXDATE,
		LAST_STARTTIME,
		LAST_ENDTIME,
		JOB_PRIORITY
FROM ETL_JOB 
WHERE T1.ETL_JOB IN(SELECT ETL_JOB FROM PETL.ETL_JOB_DEPENDECNY WHERE DEPENDENCY_JOB = 'DEPENDENCY_JOB' )
AND T1.ETL_JOB IN (SELECT DEPENDENCY_JOB FROM PETL.ETL_JOB_DEPENDECNY WHERE DEPENDENCY_JOB = 'ETL_JOB')
QUALIFY ROW_NUMBER() OVER(PARTITION BY ETL_SYSTEM ORDER BY JOB_PRIORITY DESC) = 1 
ORDER BY 1 DESC;

转换后:

SELECT 	ETL_SYSTEM,
        ETL_JOB,
		JOB_TYPE,
		LAST_TXDATE,
		LAST_STARTTIME,
		LAST_ENDTIME,
		JOB_PRIORITY
 from  (
   SELECT 	ETL_SYSTEM,
        ETL_JOB,
		JOB_TYPE,
		LAST_TXDATE,
		LAST_STARTTIME,
		LAST_ENDTIME,
		JOB_PRIORITY
  , row_number() over(partition by etl_system order by job_priority desc) as RowNumBer
FROM ETL_JOB 
WHERE T1.ETL_JOB IN(SELECT ETL_JOB FROM PETL.ETL_JOB_DEPENDECNY WHERE DEPENDENCY_JOB = 'DEPENDENCY_JOB' )
AND T1.ETL_JOB IN (SELECT DEPENDENCY_JOB FROM PETL.ETL_JOB_DEPENDECNY WHERE DEPENDENCY_JOB = 'ETL_JOB')
) TTAB0
   where RowNumBer = 1 
ORDER BY 1 DESC;

递归转换前:

with recursive as rectbl (etl_job,dependency_job,level) as (
	select etl_job,dependency_job,2(integer)
	from etl_job_dependency
	where etl_system = 'CTL'
	and etl_job = 'CTL_END'
	and enbale =1
union all
	select b.etl_job,b.dependency_job,level+1
	from rectbl a
	inner join etl_job_dependency b
	on a.dependency_job = b.etl_job
	and b.enbale = 1
	)
select  t3.etl_system d_syatem
		,t1.dependency_job d_job
		,t3.jobtype
		,t3.last_jobstatus
		,t3.last_starttime
		,t3.last_endtime
		,t3.last_txdate
		,t3.job_priority
		,max(t1.level)
from rectbl t1
inner join etl_job t3
on t1.dependency_job = t3.etl_job
qualify row_number() over (partition by t1.dependency_job order by level desc) = 1
union all
select etl_system,etl_job,jobtype,last_jobstatus,last_starttime,last_endtime,last_txdate,job_priority,1
from etl_job
where etl_system = 'CTL'
and etl_job = 'CTL_END';

递归转换后:

with recursive as rectbl (etl_job,dependency_job,level) as (
	select etl_job,dependency_job,2(integer)
	from etl_job_dependency
	where etl_system = 'CTL'
	and etl_job = 'CTL_END'
	and enbale =1
union all
	select b.etl_job,b.dependency_job,level+1
	from rectbl a
	inner join etl_job_dependency b
	on a.dependency_job = b.etl_job
	and b.enbale = 1
	)
select  t3.etl_system d_syatem
		,t1.dependency_job d_job
		,t3.jobtype
		,t3.last_jobstatus
		,t3.last_starttime
		,t3.last_endtime
		,t3.last_txdate
		,t3.job_priority
		,t1.level
 from  (
   select  t3.etl_system d_syatem
		,t1.dependency_job d_job
		,t3.jobtype
		,t3.last_jobstatus
		,t3.last_starttime
		,t3.last_endtime
		,t3.last_txdate
		,t3.job_priority
		,t1.level
  , row_number() over (partition by t1.dependency_job order by level desc) as RowNumBer
from rectbl t1
inner join etl_job t3
on t1.dependency_job = t3.etl_job
) TTAB16
   where RowNumBer = 1 
union all
select etl_system,etl_job,jobtype,last_jobstatus,last_starttime,last_endtime,last_txdate,job_priority,1
from etl_job
where etl_system = 'CTL'
and etl_job = 'CTL_END';

第一种初步正常转换已经可以完成,但是在这里出现了转换后使用别名的问题,还需要手工做一下简单的修改。

大家有好的处理方案,欢迎一起讨论讨论。

需要处理别名问题,可以联系制作者讨论一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值