<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    melody

    成為最優秀的自己
    數據加載中……
    datastage http://www.chinabi.net/blog/user1/402/archives/2005/350.html#

    Datastage的使用心得及unix應用

     

    DatastageAscential公司出品的著名第三方ETL工具。它的主要特點有:

    1.可視化操作截面,避免了大量的手工code

    2.第三方工具,善于處理復雜的數據源

    3.可監控性好,能夠快速發現ETL中的問題并解決

     

     

     

    對于Datastage的初學者來說,通過學習官方培訓資料(網上到處都有的當了),可以快速的入門,畢竟Datastage是一個可視化的工具,沒有太深澀難懂的內容。但在真正運用中,就可能碰到各種各樣的問題。下面就說一說我在使用中曾經困惑過的一些問題:

    1Job的粒度。一套ETL過程中,含有多個步驟,在設計過程中,到底是粗化一些,用少而復雜的job實現,還是細化一些,用多而簡單的job實現更好呢?我個人認為,比較細的粒度更有利于程序的開發。在開發初期,表面看來細化的job比較繁瑣,但在項目后期的測試階段,細化的job可以更準確的定位錯誤并易于修改。

    2.并行和串行。當到了開發后期,我們準備把多個job連接起來,我們就會發現,能否將多個job并行成為ETL效率的關鍵,而這個因素在設計初期往往被忽略。ETL中可能會涉及多個數據源的多個表,而多個job也可能會形成對某個數據源以及其中的某個表的爭用。當數據源爭用時,會影響ETL的執行效率。當表爭用無法解決的時候,就只能使用串行。而一個好的結構流程設計,可以極大的減少這種爭用,從而提高ETL的效率。

    3.要將Datastage與外部code相結合。Datastage并不是獨立運行的開發工具,它需要外部控制程序為載體,才可以進行良好的客戶操作。而Datastage也不是萬能的,簡單的說,它只是sql語言的一個可視化載體。因此,有一些功能,并不一定要在Datastage中實現,而應該放到外部程序中,以sql code的形式完成,以保證整個程序的穩定性,安全性。

     

     

    上面是一些大方向的問題,在實際中會有很多煩瑣的小問題,我也盡量的列舉一些:

    1.字符集:outputinput中的字符集都設置為none,是一個不錯的選擇。至少可以保證程序運行不會因為亂碼abort

    2.文本中的列分隔符無法設置為三位,從理論上講,只有三位分割符才可以保證程序不會將亂碼辨認為分隔符,這是Datastage的一個缺陷。

    3.在使用自定義sql前,需要使用非自定義形式手工配置好所需要的表,然后再切回自定義格式,如果直接寫自定義sql,將導致Datastage無法辨別表名,從而導致錯誤,這應該是一個bug

    4.保持配置一個inputoutput,就view data一下的習慣,不要等到run時再回頭找error.

    5Input中盡量不要使用insert or update之類的選項,它和insert only的差別是巨大的。使用insert or update等選項,相當于使用游標,逐條進行對比,每insert一條,都要先做一次全表掃描,其速度是可想而知的。如果必須要實現這種功能,應使用其他方法,如先delete目標表中所有與源表重復的記錄,然后再從源表中insert數據.

    6Date型數據是比較麻煩的,因為Datastage中的日期格式為timestamp,當然你也可以把它的日期格式更改為date型,但經常會出現錯誤。對于oracle數據庫源表和目標表,不需要對date型數據做任何轉換,直接使用默認即可,但對于informix等一些數據庫,則需要使用oconviconv函數進行轉換,并在output中相應的修改output sql中的日期格式。具體用法可以去網上或查datastage幫助。

    7.只要你保證inputoutput時數據類型和長度不會有問題,在兩者之間的這一段過程中,Datastage中的數據類型和長度是可以隨意更改的,也可以隨意增加自定義列。

    8.字符串中的半角空格需要用trimb,而不是trim函數,但這點往往被忽略。其他的情況還可能有半角中文等,所以字符串,長度,字符集,這幾者之間經常會導致Datastage產生錯誤,所以應盡量保證insert前的字符串長度要小于insert后的字符串長度,而你看到的insert前的字符串長度并不一定就是它在Datastage中真正的長度,所以使用trimb函數在input sql中做一下限制,才是最穩妥的方法。

     

     

    最后說一個datastageunix中應用的實例,以供大家參考:

    一個完整的ETL,其步驟是:

    1.業務用戶接口(java,jsp等友好界面)觸發

    2Shell運行

    3.啟動Controljob運行

    4Controljob啟動job

    5.監控job狀態的Controljob運行(循環運行,直到所有job結束)

    6.返回job執行情況到shell

    7Shell返回執行情況到業務接口

    8.用戶得到結果

     

    可以看出,這里包括了幾個主要元素:業務接口,shell,controljob,getstatus controljob,job

    其中只給大家列出controljob,getstatus controljob,以及shell中的controljob調度命令,其他的部分就不再詳述了

     

    一、普通的control job

    1.帶斜線、下劃線并加粗 的部分需要考慮是否是并行的,如果是并行的就不需要這句

    2.原始層需要加進藍色的行

    3.紅色的表示job的名字,用來替換job的名字

    [b1]該行對應原始層的job,當需要從文本load數據時,需要在這里調用相應的sh 

    * Setup DXrtInc, run it, wait for it to finish, and test for success

          hJobDXrtInc1 = DSAttachJob("DXrtInc", DSJ.ERRFATAL)

          If NOT(hJobDXrtInc1) Then

             Call DSLogFatal("Job Attach Failed: DXrtInc", "JobControl")

             Abort

          End

         

          Call DSExecute("UNIX", "/essbase/script/dwcorp/system/t[b1] .sh", Output, SystemReturnCode)

        

        *If FAIL Then RESET

          Status = DSGetJobInfo(hJobDXrtInc1, DSJ.JOBSTATUS)                                                                   

          If Status = DSJS.RUNFAILED Then

             ErrCode = DSRunJob(hJobDXrtInc1, DS

    posted on 2008-04-07 14:50 meilody 閱讀(627) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 0588影视手机免费看片| 日韩av无码久久精品免费| 好男人看视频免费2019中文| 亚洲人成网站在线播放影院在线| 中文字幕一区二区免费| ZZIJZZIJ亚洲日本少妇JIZJIZ| 一个人看的免费视频www在线高清动漫| 全亚洲最新黄色特级网站| 一级毛片a免费播放王色电影 | 国产又长又粗又爽免费视频| 亚洲乱人伦中文字幕无码| 国产成人高清精品免费鸭子| 欧亚一级毛片免费看| 伊人久久精品亚洲午夜| 无码日韩精品一区二区免费暖暖 | 四虎一区二区成人免费影院网址| 亚洲成A人片在线观看无码3D| 99久久综合国产精品免费| 亚洲欧美日韩中文字幕在线一区| 国产无遮挡又黄又爽免费视频| 男女男精品网站免费观看| 国产亚洲一区二区在线观看| 91精品成人免费国产片| 亚洲午夜成人精品无码色欲| 亚洲精品成人片在线观看| 四虎成人精品永久免费AV| 亚洲精品国产国语| 亚洲人成无码网WWW| 67194成手机免费观看| 亚洲欧美黑人猛交群| 亚洲中文字幕无码一区二区三区| 100部毛片免费全部播放完整| 亚洲AV第一成肉网| 亚洲av无码不卡一区二区三区| 成人性生交大片免费看无遮挡| 国产亚洲人成在线影院| 久久精品国产亚洲av影院| 国产又黄又爽又猛的免费视频播放| 99久久99这里只有免费的精品| 亚洲91精品麻豆国产系列在线| 亚洲色欲久久久久综合网|