2017-02-17 249 views
0

我对datastage有一个基本的理解问题。我对这个领域很陌生。这是关于循环的实现。首先,我使用连接器阶段获得了多行选择查询。现在我想为每一行做更多的步骤。现在每行的结果应该在下一个阶段用作变量。我怎样才能做到这一点?我知道变压器阶段的回路可能性,但似乎并没有解决我的问题。datastage中的简单循环

我应该使用jop序列中的循环阶段吗?如果是的话如何?

问题:

foreach($selectQueryResults as row) { 
// do something with the row-value 
} 

谢谢!

+0

嘿,你听起来像是在试图从源SQL语句中填充参数。 您是否看过在例程中生成请求,然后传递响应(可能使用键值对)并设置参数? 对于初学者来说,这是一个非常复杂的任务,因为它涉及到了解底层BASIC代码和DataStage函数以更新参数 –

+0

您好,感谢您的提示。但你能告诉我一个简单的例子吗? – binf

回答

0

我不得不承认,我无法再访问DataStage,也没有我曾经拥有的代码。

这是在作业级别

传播阶段变量然而,日常活动来完成你的任务将是如下。

  1. 传播SQL作为一个变量
  2. 使用DSExecute执行命令行功能(打电话的SQLPlus,nzsql或任何你的命令行)和
  3. 返回它的结果通过您的SQL变量到另一个变量
  4. 使用该变量,您可以先分行分割内容,然后使用循环/ for语句通过分隔符分割内容。
  5. 使用DSSetParam通过使用DSAttachJob功能的键值对你的具体工作参数映射,或者只是宣传他们作为输出从日常活动

BASIC Language Reference

DSSetParam

请记住,错误处理和注释在BASIC例程中很重要,否则

随后,这是传播阶段v变压器内的可变电容器,一旦掌握了它,它就是一个非常强大的工具。

以下是在Transformer模型中定义阶段变量并汇总输出的文档和示例。请注意,阶段变量的顺序非常重要。

TransformerLoops

在变压器可以定义传入的列级变量,使用这些变量舞台聚集,串联(串),分割,减...基本上,你可以做一个可笑的金额,一旦你得到你的围着它转。

我会建议先通过Transformer示例,因为我怀疑这可能是您要找的。

请记住,它不一定要在一个变压器阶段完成,您可以在第一个变压器中完成初始清洗,然后在第二个阶段完成复杂的循环,然后打破步骤,为你。