在工作中,我们使用Datastage 9.1创建一些报告,基本结构是一个JOB,它使用Oracle Connector来选择我们需要的数据,然后使用变换器创建一些报告。 问题是,当有0个记录时,JOB只是跳过所有内容并创建一个空输出文件即使变换器有一些“硬编码”数据,这意味着报告的某些部分会有静态数据,这些数据总是在那里,一些字符串等。 即使没有输入,我们有什么方法可以强制DS运行整个JOB?感谢。
作为后续工作,我考虑创建一个总是至少返回一个值的选择,类似于“SELECT NAME,ADDRESS,'1'AS DATA FROM TABLE”,这样它总会有一些数据要运行用。问题是它会创建一个假的条目,并且报告将使用“1个交易”创建,即使它是空的,这对我没有好处。
答案 0 :(得分:0)
提供的信息很难得到完整答案,但首先,当选择了0条记录以及SQL结果的外观时,您必须明确要查看的内容。
一个想法可能是使用union all SQL语句和你已经描述为UNION ALL中的第二个SQL的伪SQL。
要仅检索一个或另一个,我建议遵循以下结构(或类似的东西)
with temp as (
select 'original' as text, 1 as id
from sysibm.sysdummy1
where 1 = 1
union all
select 'fallback' as text, 2 as id
from sysibm.sysdummy1
)
select * from temp
where id = (select min(id) from temp)
UNION AL的第一部分是原始声明,如果第一部分没有返回任何内容,则仅选择/返回后备声明。
如果没有从源中重新调整任何内容,则第二个statemnt应该保存您需要的数据。除此之外,您还可以使用一些DataStage逻辑(每当ID = 2时)
希望这有帮助