2017-02-17 242 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示例,因爲我懷疑這可能是您要找的。

請記住,它不一定要在一個變壓器階段完成,您可以在第一個變壓器中完成初始清洗,然後在第二個階段完成複雜的循環,然後打破步驟,爲你。