DataStage中使用自定義的Routines

很久沒有來這裏了,實在有點對不起大家,這段時間都太忙了,有不少網友找我聯繫都沒時間去回,實在抱歉!今天想跟大家一起學習下DataStage中如何自定義Routines以及使用自定義的Routines。
      其中在google裏也可以收到類似的例子,而且比我也講得詳細,大家有興趣也可以去搜下相關資料。這裏我僅把我做的一個例子分享給大家,拋磚引玉吧!
      在DataStage中Routines是一個非常強大的內置函數庫(個人看法),其中包括大量內置函數可供我們使用,對於其中的函數個人也瞭解不多,更多地是遇到相關問題查找其幫助文檔。當然再多的函數也有可能滿足不了自身的業務需求,因此學會自定義一些函數還是有必要的。費話少說,下面來看看我是怎樣自定義Routines,然後將其用於轉換過程。
1。       
      既然Rountines是個函數庫,那我們自定義的當然就只是它其中的一個函數而已,想到函數那就簡單了:
      函數名:myTest1
     參數(整個最簡單的):inputparameter
     返回值:暫時不用管,等會兒再吹!:)
     函數功能:當讀出某字段的值爲1時,將該字段改爲2;值爲空或null時,將其改爲inputparameter is blank!!;值不爲空也不爲1時,將其改爲inputparameter is not 1!!(哈哈,沒見過這麼垃圾的功能吧!我自己都沒見過,呵呵,不過我是隻注重過程不注重結果的人!)
2。
     2.1 新建一個Routines的目錄
    
    在Designer中右鍵Routines,如上圖,新建一個放自定義Routines的目錄,如果你不願意,我也沒辦法,個人習慣而已!
    2.2 新建一個Server Routine
   
    在剛剛建的那個Routine目錄下點右鍵,新建一個自己的Routine,在彈出的對話框中填入Routine name,Type(表示你要在哪個stage中用自定義的這個Routine),Category(表示該Routine所在的目錄,如果在第一步中沒有建該目錄就不用管了),description(對該Routine的必要描述,你總得讓其他人看得懂吧:))  ,如下圖:
    在Arguments標籤頁中填入該Routine的參數,在我們這裏就是inputparameter

     接下來就是最關鍵的Routine功能的實現,如下圖:

        這裏的實現主要用的是Basic語言,如果你用過VB,那語言上應該沒問題。Basic的語法我就不說了,大家可以去google一下,附件是我的代碼,非常簡單,重點說說代碼中以下幾個關鍵點:
         IsNull(inputparameter)=1判斷輸入的inputparameter是否爲null,如果發現是null,IsNull()返回1,對Oracle中值爲空的字段值,用ds來讀是null形式。
  Ans是函數默認的返回值,如果要想函數返回某個值,只需將要想返回的值賦於Ans。
  Call DSLogInfo()是調用DS中內置的log信息函數,即把信息顯示在director中相應的Job運行log裏。
  2.3 編譯,測試自定義的Routine   
 2.4 測試成功後,就要開始使用我們定義的Routine了
 首先做一個ServerJob,Job的主要功能完成從源(Oracle數據庫中某個表)到目標(某個文件)的抽取和轉換過程,如下圖: 
 具體Oracle_OCI_0 和Sequential_File_1的配置就不用多講了,大家可以參考我寫的<DataStage實踐之簡單入門>,如果還有問題可以Q我,這裏主要說下在Transformer_2中如何使用自定義的Routine:
 打開Transformer_2 Stage,雙擊Derivation區域中要對某個字段使用Routine的那個區域,如下圖(雙擊Derivation所在列的紅色區域,即Column Name爲FlAG):
 
雙擊後出現一個文本框:
 
再右鍵該文本框,選DS Routine....,再彈出框中選中你自定義的Routine:
 
再雙擊%inputparameter%,使其爲選中狀態,右鍵選中區域,在選擇Input Column...後選擇
Flag字段,如下圖:
 
這一步其中就是將Flag作爲參數賦予自定義的Routine(myTest1),講到這裏大家都清楚了吧:),編譯,運行,OK!
 你們試試吧!!!

 總結:其實自定義Routines的難點並不在於如何使用,而在於如何寫一個效率高而又滿足我們業務需求的Code,所以學會寫纔是問題的關鍵。祝你們好運!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章