datastage經(jīng)驗(yàn)總結(jié)_第1頁(yè)
datastage經(jīng)驗(yàn)總結(jié)_第2頁(yè)
datastage經(jīng)驗(yàn)總結(jié)_第3頁(yè)
datastage經(jīng)驗(yàn)總結(jié)_第4頁(yè)
datastage經(jīng)驗(yàn)總結(jié)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄1 如何重新啟動(dòng)DataStage服務(wù)器, 步驟如下:52 DataStage開發(fā)經(jīng)驗(yàn)積累:52.1 模板開發(fā)52.2 通過Server Shared Container在Parallel Job中添加Server Job Stage52.3 去除不需要的字段52.4 Transformer Stage的使用52.5 Look up/join   空值處理62.6 DataStage中默認(rèn)和隱式類型轉(zhuǎn)換時(shí)注意的問題62.7 配置一個(gè) input或output,就view data一下,不要等到run時(shí)再回頭找error72.8 Data型數(shù)據(jù)是比較麻煩的72.

2、9 行列互換之Horizontal Pivot(Pivot Stage)72.10 行列互換之Vertical Pivot72.11 Oracle EE Stage在VIEW數(shù)據(jù)時(shí)出現(xiàn)的錯(cuò)誤及解決方法92.12 DataStage SAP Stage的使用102.13 Colum Import Stage的使用102.14 Colum Export Stage的使用122.15 Got ERROR: Cannot find any process number for stages in Job Jobname解決132.16 Unable to create RT_CONFIGnnn142.

3、17查看job和client的對(duì)應(yīng)的后臺(tái)進(jìn)程142.18強(qiáng)制殺死DS進(jìn)程142.19查看Server Engine的進(jìn)程152.20查看Server Locks152.21關(guān)于UNIX系統(tǒng)下無(wú)法啟動(dòng)服務(wù)的解決辦法162.22Locked by other user172.23dataStage Job Log的處理172.24一些BASIC語(yǔ)言中處理字符串的函數(shù)172.25BASIC程序中使用到的一些語(yǔ)法知識(shí)183DS中常見問題記錄223.1 權(quán)限管理問題223.2 job may be being monitored或者是cleanup問題223.3 刪除文件的問題223.4 sequenc

4、e調(diào)度出現(xiàn)的錯(cuò)誤問題233.17字符集問題233.18VersionControl的問題233.19sequence調(diào)不起JOB的問題243.20sequence調(diào)度失敗的問題243.21DS發(fā)送郵件的配置問題243.22隨機(jī)錯(cuò)誤問題243.23DS中的日期問題253.24DS連接oracle問題253.25在Sequence File Stage中的空值處理問題253.26在DS中使用Oracle Enterprise Stage必須的權(quán)限263.27DS中去除回車符的問題以及從char類型轉(zhuǎn)變成整型的方法263.28從后臺(tái)看JOB列表的方法263.29Datastage和數(shù)據(jù)庫(kù)的連接方法2

5、73.30在datastage中使用環(huán)境變量的問題273.31IConv 和 OConv273.32在Merge中使用特殊字符284部分常用Stage 的使用說明285dsjob 語(yǔ)法說明:296如何從DataStage服務(wù)器導(dǎo)出所開發(fā)的JOBS列表317查看當(dāng)前服務(wù)器狀態(tài)信息的方法:348如何在兩臺(tái)機(jī)器之間進(jìn)行FTP文件359如何獲得Jobstatus ,步驟如下:3610dsjob run 的用法3811如何在后臺(tái)運(yùn)行和停止一個(gè)JOB3912DS Oracle EE Stage 配置4111.1 安裝Oracle客戶端4111.2 添加Oracle用戶到dsadm group組選項(xiàng)4111

6、.3 配置DataStage服務(wù)器dsenv文件4111.4 配置tnsnames.ora4211.5 重起DataStage服務(wù)4211.6 配置Oacle Stage抽取的Select權(quán)限4211.7 Oacle EE STAGE配置結(jié)束4313DS ODBC 的配置4312.1 修改$DSHOME /dsenv4312.2 修改$DSHOME/.odbc.ini, 來(lái)提供數(shù)據(jù)庫(kù)連接信息;4312.3 修改$DSHOME/uvodbc.config, 來(lái)指定DSN(data source name).4414ETL系統(tǒng)擴(kuò)展4515Remote Shell (rsh)的配置4514.1 創(chuàng)建

7、并配置 .rhosts文件4514.2 修改/etc/hosts.equiv文件4616dsadmin命令的使用4615.1 dsadmin命令的使用4617如何啟動(dòng)JobMonApp4818DS.TOOLS4819uvsh常用命令5118.1 LOGTO ProjectName -登錄一個(gè)工程5118.2 DS.TOOLS -進(jìn)入DS工具5118.3 LIST DS_JOBS -顯示所有的Job及Job的分類Category5118.4 LIST DS_JOBS WITH NAME=JobName -顯示某個(gè)特定Job的信息5118.5 LIST.READU EVERY -列出所有的鎖及鎖的

8、擁有用戶UserName5118.6 UNLOCK USER userno ALL -解鎖用戶鎖住的Jobs5118.7 LIST.INDEX - 列出資料庫(kù)的索引5220Usage Analysis來(lái)進(jìn)行影響分析5219.1 如何啟動(dòng)Usage Analysis5219.2 Usage Analysis中Select Columns的使用5319.3 Usage Analysis中View HTML的使用5419.4 Usage Analysis中Locate in Manager的使用5519.5 Usage Analysis可使用的Source類型5621DS Message Handl

9、ers5720.1 Message Handlers的兩種級(jí)別5720.2 Message Handlers的三種動(dòng)作種類5820.3 Message Handlers的文件格式5822DS Parallel Routine5921.1 Parallel Routine注意事項(xiàng)5921.2 Parallel Routine創(chuàng)建流程5921.3 Parallel Routine示例6023uvconfig文件中參數(shù)修改方法6222.1修改文件uvconfig中的參數(shù)6222.2運(yùn)行uvregen6222.3重啟DS服務(wù)6222.4校驗(yàn)6224&PH&6223.1cd &P

10、H& 或 cd &PH&6225DB2支持的數(shù)據(jù)格式6326DB2中Load語(yǔ)法和基本使用641 如何重新啟動(dòng)DataStage服務(wù)器, 步驟如下: 1.01啟動(dòng)DataStage Server 的命令要在$DSHOME/bin 目錄下進(jìn)行. 啟動(dòng)之前要切斷所有與服務(wù)器端的連接:1. 登陸DataStage 服務(wù)器,輸入: $DSHOME/bin 2. 關(guān)閉DataStage 服務(wù)器 ./uv admin stop 3. 檢查服務(wù)器上是否還有進(jìn)程沒關(guān)掉,否則服務(wù)器無(wú)法啟動(dòng)起來(lái),netstat -a | grep ds4. 重起服務(wù)器 ./uv admin start.

11、Note: 關(guān)閉DataStage 服務(wù)器后,建議過30 sec 再重起服務(wù)器.2 DataStage開發(fā)經(jīng)驗(yàn)積累: 2.1 模板開發(fā)并行JOB中模板的開發(fā)可以最大程度的重用并行JOB的構(gòu)件,節(jié)省時(shí)間 1. 使用JOB參數(shù)(PARAMETER)可以在運(yùn)行時(shí)提供參數(shù)的值,增加靈活性,可以在不同的環(huán)境處理不同的數(shù)據(jù);使用JOB PARAMETER 可以在同一時(shí)間使用不同參數(shù)運(yùn)行同一個(gè)JOB 2. Shared Container 共享容器可以在多個(gè)JOB中共享相同的邏輯,當(dāng)一個(gè)JOB編譯時(shí)共享容器被嵌入. 2.2 通過Server Shared Container在Parallel Job中添加S

12、erver Job Stage 在Designer中創(chuàng)建一個(gè)server shared container,添加需要的Server job stage,再把server shared container添加到parallel job并連接到其他parallel stage. 2.3 去除不需要的字段 當(dāng)從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)時(shí),要盡可能早的去除不需要的字段,只讀取需要的字段,而不是整個(gè)表,這樣可以提高數(shù)據(jù)讀取效率. 2.4 Transformer Stage的使用1. 慎用Transformer Stage,因?yàn)樗赡芙档蚃OB的運(yùn)行效率,有些功能能合并成一個(gè)單獨(dú)的STAGE的不要用多個(gè)STAGE

13、,要用其他的STAGE來(lái)代替Transformer Stage 能完成的任務(wù). 2. Transformer Stage 的數(shù)據(jù)流程是先經(jīng)過constraint的過濾,然后再經(jīng)過Derivation處理3. 對(duì)于確定類型的操作,使用其他STAGE 比使用TRANSFORMER 會(huì)更好: (1) 對(duì)如下情況,使用Copy Stage 將比Transformer Stage 更好 在界面上提供一個(gè)JOB 設(shè)計(jì)占位符 重新命名字段 刪除字段 Implicit類型變換 (2) 使用Filter Stage 或者 Switch Stage 來(lái)把輸入記錄按照限制表式分成多個(gè)輸出分支. (3) 使用Modi

14、fy Stage 來(lái)explicit 類型變換和Null處理 Modify Stage 也可重新命名字段保持(keep)或刪除(drop)字段也可增加新字段,并為新增字段賦值,但賦值方式要以字段=字段 形式,例如: new_columnname = old_columnname; 但new_columnname =”hf”這樣賦值是錯(cuò)誤的Null的處理destinationColum=handle_null(sourceColum,Value)destinationColum=make_null(sourceColum,Value),這個(gè)使用中有問題,不處理空值2.5 Look up/join

15、   空值處理1. 當(dāng)使用Lookup Failure = Contunue 時(shí),要把 reference link 的非主鍵設(shè)置成Nullable,即使reference data 是非空的,也要設(shè)置成Nullable,這樣能夠確保Lookup 把空值分配給沒有匹配的參考非主鍵 2. 如果參考非主鍵沒有設(shè)置成Nullable ,將會(huì)發(fā)生什么:Lookup 將會(huì)分配一個(gè)默認(rèn)值給沒有匹配的的行:Integer 默認(rèn)值為0Varchar/char默認(rèn)值為空字符串(0長(zhǎng)度的)2.6 DataStage中默認(rèn)和隱式類型轉(zhuǎn)換時(shí)注意的問題當(dāng)從源向目標(biāo)映射數(shù)據(jù)時(shí),如果類型不一致,對(duì)于有些

16、類型我們需要在modify或transfomer stage中通過函數(shù)進(jìn)行轉(zhuǎn)換,對(duì)于有些系統(tǒng)會(huì)自動(dòng)完成類型轉(zhuǎn)換,在類型轉(zhuǎn)換過程中,注意以下幾點(diǎn):1 在變長(zhǎng)到固定長(zhǎng)度字符串的默認(rèn)轉(zhuǎn)換中,parallel jobs用空格(ASCII 20)字 符來(lái)填充剩余長(zhǎng)度(環(huán)境變量APT_STRING_PADCHAR的默認(rèn)值也是空格(ASCII 20),具體在哪個(gè)stage填充的不知.2 通過環(huán)境變量APT_STRING_PADCHAR可以改變默認(rèn)的填充字符null(ASCII 0)。3 有個(gè)PadString 函數(shù)可以用來(lái)用指定的字符來(lái)填充一個(gè)變長(zhǎng)的字符串到指定的長(zhǎng)度。這個(gè)函數(shù)的參數(shù)不能使固定長(zhǎng)度字符串,如

17、果是固定長(zhǎng)度的先轉(zhuǎn)化為變長(zhǎng)。2.7 配置一個(gè) input或output,就view data一下,不要等到run時(shí)再回頭找error2.8 Data型數(shù)據(jù)是比較麻煩的因?yàn)镈atastage中的日期格式為timestamp,當(dāng)然你也可以把它的日期格式更改為date型,但經(jīng)常會(huì)出現(xiàn)錯(cuò)誤。對(duì)于oracle數(shù)據(jù)庫(kù)源表和目標(biāo)表,不需要對(duì)date型數(shù)據(jù)做任何轉(zhuǎn)換,直接使用默認(rèn)即可,但對(duì)于informix等一些數(shù)據(jù)庫(kù),則需要使用oconv,iconv函數(shù)進(jìn)行轉(zhuǎn)換,并在output中相應(yīng)的修改output sql中的日期格式2.9 行列互換之Horizontal Pivot(Pivot Stage)

18、列變行,即寬表變窄表,字段變少了,記錄數(shù)變多了,牽涉到Column數(shù)量的變化;注意要在Pivot-àOutput的Derivation中寫上轉(zhuǎn)換字段的來(lái)源字段,字段之間用逗號(hào)隔開例子:PIVOT Input記錄如下:Id col1 col2 col32 Rootpath Workdate EdsDbname3 Rootpath Workdate AsdmDbnamePIVOT Output記錄如下:Id colum2 Rootpath2 Workdate2 EdsDbname3 Rootpath3 Workdate3 AsdmDbname2.10 行列互換之Vertical Pivo

19、tPivot Stage是寬表變窄表,也即:Horizontal Pivot;實(shí)際應(yīng)用中還會(huì)牽涉到窄表寬表,即Vertical Pivot的應(yīng)用。例如:輸入Input記錄如下:IdColumn2Rootpath 2Workdate 2EdsDbname 3Rootpath 3Workdate 3AsdmDbname我們想要的輸出Output記錄是這樣的:IdNewCol2Rootpath,Workdate,EdsDbname3Rootpath,Workdate,AsdmDbname解決方法如下:Server Job的做法:Sequence File-à Transform-à

20、; Hash File源表結(jié)構(gòu): Id varchar 10 Column varchar 10Define Transform as follows Stage Variables:currentKey    Initial value = ""    Derivation = L1.Id newRecord    Initial value = ""    Derivation = if currentKey=lastKey Then newRecord:",&

21、quot;:L1.Column else L1. ColumnlastKey    Initial value = ""    Derivation = currentKeyL2 Deriviations L2.key = L1.IdL2.line = newRecord目標(biāo)表結(jié)構(gòu):Id varchar 10 (marked as the key) Newcol varchar 200(注意:Stage Variable的有先后順序的,它是按照先后順序來(lái)賦值的,所以lastKey要在newRecord后面)如果把Newcol的值放在不

22、同的字段中,格式如下:IdCol1Col2Col32RootpathWorkdateEdsDbname3RootpathWorkdateAsdmDbname解決方法是:把NewColm的值讀出來(lái)賦給一個(gè)Stage Variable,然后使用Field(NewCord, ",",1),F(xiàn)ield(NewCord, ",",2).等等,把值賦給每個(gè)Colm。Parallel Job的做法:(按照SERVER JOB的做法,然后改成串行方式也能實(shí)現(xiàn))1.使用Sort Stage對(duì)Key Column: Id 進(jìn)行分區(qū)和排序;并設(shè)置Create Key Chan

23、ge Column=True(作用是第一條記錄會(huì)標(biāo)識(shí)為1,其它0),產(chǎn)生KeyChange Column; 運(yùn)行出來(lái)的結(jié)果如下:IdColumn KeyChange- - -2Rootpath 12Workdate 02EdsDbname 03Rootpath 13Workdate 03AsdmDbname 0 2.在Transform Stage里創(chuàng)建Stage Variable;創(chuàng)建變量后,根據(jù)KeyChange的值來(lái)設(shè)置變量的值;如:創(chuàng)建變量svBuildColum,賦值:if DSLink12.keyChange=1 then DSLink12.Column else svBuildC

24、olumn : "$" : DSLink12.Column運(yùn)行出來(lái)的結(jié)果如下:IdColumn KeyChange svBuildColum- - - -2Rootpath 1Rootpath 2Workdate 0Rootpath $Workdate 2EdsDbname 0Rootpath $Workdate $EdsDbname 3Rootpath 1Rootpath 3Workdate 0Rootpath $Workdate 3AsdmDbname 0 Rootpath $Workdate $AsdmDbname 3.使用Remove_Duplicates Stag

25、e,根據(jù)Key Colum:Id去除重復(fù)行,并Retain Last;運(yùn)行的結(jié)果如下:Id svBuildColum- -2 Rootpath $Workdate $EdsDbname 3 Rootpath $Workdate $AsdmDbname4.如果把svBuildColum的值放在不同的字段中,使用Field(NewCord, "$",1),F(xiàn)ield(NewCord, "$",2).等等,把值賦給每個(gè)Colm.最后結(jié)果如下:IdCol1Col2Col32RootpathWorkdateEdsDbname3RootpathWorkdateAsd

26、mDbname2.11 Oracle EE Stage在VIEW數(shù)據(jù)時(shí)出現(xiàn)的錯(cuò)誤及解決方法錯(cuò)誤信息如下:#I TOSH 000002 04:05:22(001) <main_program> orchgeneral: loaded #I TOSH 000002 04:05:22(002) <main_program> orchsort: loaded #I TOSH 000002 04:05:22(003) <main_program> orchstats: loaded >#E TOSH 000205 04:05:22(004) <main_p

27、rogram> PATH search failure: >#E TOSH 000000 04:05:22(005) <main_program> Error loading "orchoracle": Could not load "orchoracle": The specified module could not be found. >#E TOSH 000000 04:05:22(006) <main_program> Could not locate operator definition, wrap

28、per, or Unix command for "oraread" please check that all needed libraries are preloaded, and check the PATH for the wrappers >#E TCOS 000029 04:05:22(007) <main_program> Creation of step finished with status = FAILED解決方法:running 7.5x2 EE on the Windows platform1. cd to your C:Asce

29、ntialDataStagePXEngineinstall 2. type sh 3. ORACLE_HOME="C:/Your_Oracle_Client" 4. export ORACLE_HOME 5. APT_ORCHHOME="C:/Ascential/DataStage/PXEngine" 6. export APT_ORCHHOME 7. sh install.liborchoracle then you will see the message on the screen; Installing Oracle Drvie Using C:

30、/Your_Oracle_Client as ORACLE_HOME Installing drive for Oracle version 9i or 10g Oracel installation is complete. Reboot the machine after above is done2.12 DataStage SAP Stage的使用見附件: 2.13 Colum Import Stage的使用 將一個(gè)字段中的數(shù)據(jù)輸出到多個(gè)字段中, 完成分割單個(gè)字段數(shù)據(jù)到多個(gè)字段的目的;輸入數(shù)據(jù)應(yīng)為定長(zhǎng)或者有可以被識(shí)別的可分割的界限,必須是String或者Binary類型的,輸出數(shù)據(jù)可以

31、是任何數(shù)據(jù)類型;字段分割后:2.14 Colum Export Stage的使用與Column Import Stage相反,將多個(gè)類型不同的字段合并成一個(gè)string或者binary類型的字段合并字段后:2.15 Got ERROR: Cannot find any process number for stages in Job Jobname解決當(dāng)我們用Director來(lái)ClearUp Resources 或 Clear Status File 時(shí)候,會(huì)出現(xiàn)上面的錯(cuò)誤提示;原因是:incorrect permissions settings. Following correct sett

32、ings were done to solve the problem: -rwsr-x-x 1 root dstage 1519616 Nov 13 2003 dsdlockd -rwsr-x-x 1 root dstage 1499136 Nov 13 2003 dslictool -rwsr-x-x 1 root dstage 3678208 Nov 13 2003 dstskup -rwsr-x-x 1 root dstage 1519616 Nov 13 2003 list_readu -rwsr-x-x 1 root dstage 1486848 Nov 13 2003 upduv

33、trans -rwsr-x-x 1 root dstage 53248 Nov 13 2003 uv -rwsr-x-x 2 root dstage 3796992 Nov 13 2003 uvbackup -rwsr-x-x 1 root dstage 49152 Nov 13 2003 uvdls -rwsr-x-x 2 root dstage 3796992 Nov 13 2003 uvrestore -rwsr-x-x 1 root dstage 16384 Nov 13 2003 uvsetacc Settings for all the above was found to be

34、incorrect. dsadm was the owner instead of root and also permissions were incorrect.2.16 Unable to create RT_CONFIGnnn造成這種問題的最普遍的兩個(gè)原因是:Is the file system on which your project directory exists full;Do you have write permission to your project directory2.17 查看job和client的對(duì)應(yīng)的后臺(tái)進(jìn)程$ps -fu dsadmUID &#

35、160; PID  PPID  C    STIME TTY      TIME CMD dsadm 11779 11776 0 09:02:02 ? 0:14 phantom DSD.StageRun loadDataDayAg. loadupdIRCashIVDayAg.xfm 3 0/0dsadm 1761 1760 2 08:56:27 ? 23:16 phantom DSD.RUN Batch:MasterControlOrderDetail. 0 ParameterFile=/var

36、/opt/dat前者是Job stage thread,后者是Job main threaddsadm 29865 29863  0   Oct 25 ?        2:57 dsapi_slave 8 7 0 (User client database slave)2.18 強(qiáng)制殺死DS進(jìn)程Cd $DSHOME/binlist_readups ef | grep username2.19 查看Server Engine的進(jìn)程$netstat -a|grep uv or $netstat -

37、a|grep dsrpc *.uvrpc *.* 0 0 24576 0 LISTEN-Daemon listener . .ESTABLISHED-Clients attached$ ipcs -Shared memory usage$ ps -ef |grep uni-Engine daemonroot 12970 1 0 Oct 09 ? 0:11 /opt/Ascential/DataStage/unishared/unirpc/unirpcd-Engine daemon2.20 查看Server Locks$ cd cat /.dshome $ . ./dsenv

38、 $ bin/uvsh-DSEngine command prompt上面的操作等同于DataStage Adminitratot->Projects(tab)->Command(button)>DS.TOOLSVerb "DS.TOOLS" is not in your VOC. DS.TOOLS utility >LOGTO yourprojectname>DS.TOOLS Which would you like? ( 1 - 6 ) ?5 Which would you like? ( 1 - 11 ) ?4>LISTU-User

39、s in DataStage>LIST.READU-List lock table command上面操作等同于$DSHOME/bin/list_readu>QUIT同樣,在查看job pid及l(fā)ocks也可以通過datastage director->Jobs->Clearup Resources4,DataStage Filesystem Mount Points$ cd cat /.dshome $ df -k . 5,DataStage Engine Daemon $ cd /etc/rc2.d $ more S999ds.rc2.21 關(guān)于UNIX系統(tǒng)下無(wú)法啟

40、動(dòng)服務(wù)的解決辦法在診斷啟動(dòng)失敗的原因之前,先說說如何停止服務(wù)。   啟停服務(wù)的命令大家都知道,要注意的是停止服務(wù)之前應(yīng)先確保無(wú)client連接、無(wú)端口連接:1. 使用ps -ef|grep ds 查看client連接情況,如果還有client連接,你又無(wú)法查找是誰(shuí),急需重啟,可以通過director將所有的連接log off2. 使用netstat -a|grep dsrpc 查看網(wǎng)路連接狀況,確保只有l(wèi)isten狀態(tài)   這樣,將服務(wù)停止,會(huì)很順利的重啟服務(wù)。   當(dāng)執(zhí)行完重啟命令后,使用ps -ef|grep dsrpcd 查看服

41、務(wù)是否啟動(dòng),如果此服務(wù)沒有啟動(dòng),查看:1. ps查看有無(wú)client連接,殺掉進(jìn)程。2. netstat查看網(wǎng)絡(luò)情況,有無(wú)FIN_WAIT_2 or CLOSE_WAIT等的tcp狀態(tài),如果有,則使用ndd 命令調(diào)整datastage的端口連接,方法如下(如hp-unix):查找進(jìn)程號(hào):ndd -get /dev/tcp tcp_status |grep -e state -e FIN_WAIT_2 斷開連接,釋放端口:ndd -set /dev/tcp tcp_discon 0x+進(jìn)程號(hào)    如果上述情況都核實(shí)后,仍啟動(dòng)失敗  請(qǐng)使用 "./bin

42、dsrpcd -d9 >/tmp/dsrpcd.log 2>&1 &" 來(lái)啟動(dòng)服務(wù),在 dsrpcd.log 文件中看到啟動(dòng)日志信息,根據(jù)實(shí)際情況解決。2.22 Locked by other user啟動(dòng)DataStag Director ,Job->Clearup Resources,在這個(gè)操作窗口中,首先選擇窗口下部 "Locks"中的"Show All",你可以看到窗口顯示了所有l(wèi)ock的信息:PIDLock TypeItem Id。在Item Id的列表里找到你需要重新打開的job/routine和其

43、對(duì)應(yīng)的PID值。然后選擇上半部分"Processes"中的"Show All",鼠標(biāo)選中剛才查到的PID,然后LogOut。 如果不使用Diretor,你可以在DS administrator中使用"list.readu" 或者"DS.TOOLS" command,同樣會(huì)列出所有的lock信息。That's Ok!2.23 dataStage Job Log的處理如何在操作系統(tǒng)層面上,使用command的到j(luò)ob log?在操作系統(tǒng)中我們可以使用engine(UNIX DSEngine)/bin 下的命令:

44、dsjob -log -info | -warn <project><job>dsjob -logsum -type<INFO|WARNING|FATAL|REJECT|STARTED|RESET|BATCH> -max <n> -userid <project><job|jobid>dsjob -lognewest -userid <project><job|jobid> <event type>     event type = INFO|WA

45、RNING|FATAL|REJECT|STARTED|RESET|BATCHdsjob -logdetail useid <project> <job|jobid><event id>可以編輯shell或者bat文件,將所有的job log輸出。在datastage內(nèi)部有其相應(yīng)的function:DSGetLogEntryDSGetLogSummaryDSGetNewestLogId2.24 一些BASIC語(yǔ)言中處理字符串的函數(shù)a使用冒號(hào)":"作為字符串連接的符號(hào)。例如:"5A" : "_" : &

46、quot;2N" 等價(jià)于字符串 "5A_2N" b使用中括號(hào) 來(lái)取出某個(gè)字符串的子串,其語(yǔ)法如下:expression start, length 例如:strA="abcdef ", 那么strA1,3的意思就是從序號(hào)為1的字符開始,一共取出三個(gè)字符,其結(jié)果就是"abc"。BASIC語(yǔ)言中數(shù)組或者字符串的第一個(gè)元素的序號(hào)是1。 cCount (string, substring)用來(lái)計(jì)算字符串中的某個(gè)子串出現(xiàn)的次數(shù)。例如:計(jì)算字符串"abacab"中的子串"ab"出現(xiàn)的次數(shù),arrC

47、nt = Count("abacab", "ab"),那么arrCnt就等于2。 dLen (string) 用來(lái)計(jì)算字符串中包含的字符的個(gè)數(shù)。例如:Len("abc")的值就是3。 eTRIMF (string) 用來(lái)刪掉字符串首部的空格。TRIMB (string) 用來(lái)刪掉字符串尾部的空格。例如,字符串strA=" abc ",其首尾各有多個(gè)空格。經(jīng)過strA= TRIMF (strA)和strA= TRIMB (strA)這樣的處理就可以除掉字符串首尾的所有空格了,其結(jié)果是"abc"。

48、fIndex (string, substring, instance) 用來(lái)得到字符串中的某個(gè)子串的位置。其中instance表示這個(gè)子串是在整個(gè)字符串中是第幾次出現(xiàn)。例如:字符串為"abacab",要計(jì)算子串"ab"第二次出現(xiàn)在字符串中的位置。Index ("abacab", "ab", 2 )的結(jié)果就是5。2.25 BASIC程序中使用到的一些語(yǔ)法知識(shí)(1). BASIC語(yǔ)言有四種符號(hào)用來(lái)標(biāo)記注釋,分別是REM,*,! ,$*。例如,*Initial. Validate the input parameter

49、s.這一行以"*"星號(hào)開頭,就表示這一行內(nèi)容是程序的注釋。(2). 條件判斷語(yǔ)句,其語(yǔ)法結(jié)構(gòu)如下:If conditionThen statementsEndElse statementsEnd其中condition可以是一個(gè)數(shù)字,也可以是一個(gè)比較關(guān)系式。當(dāng)條件為真時(shí),程序執(zhí)行Then后面的表達(dá)式;當(dāng)條件為假時(shí),則會(huì)執(zhí)行Else后面的表達(dá)式。在Basic語(yǔ)言中,邏輯關(guān)系運(yùn)算符是這樣的:· AND (或者符號(hào) &),表示邏輯與的關(guān)系。 · OR (或者 !),表示邏輯或的關(guān)系。 · NOT,表示邏輯非的關(guān)系。例如:If bitCount

50、> arrCnt Then Ans="error bitValue: " : bitCount :".Its value is too large." Call DSLogWarn(Ans,"TransBitMask") GoTo ExitFuncEnd由BitValue轉(zhuǎn)化而來(lái)的二進(jìn)制數(shù)的位數(shù)大于子串的個(gè)數(shù)時(shí),就在日志信息中告訴用戶BitValue的值和OriStr的值是不可能一一對(duì)應(yīng)的,輸入的數(shù)據(jù)有錯(cuò)誤。If BitValue >= 0 AND Count(BitValue, ".")=0 Then

51、 mask=Oconv(BitValue, "MB")End Else Ans="error bitValue:" : BitValue Call DSLogWarn(Ans,"TransBitMask") GoTo ExitFuncEnd當(dāng)輸入變量BitValue的值大于零且不是小數(shù)的時(shí)候,就把它轉(zhuǎn)化為二進(jìn)制的數(shù);否則為用戶提出警告信息并且離開這個(gè)函數(shù)。(3). 使用BASIC自帶的一些功能函數(shù)。Oconv(expression, conversion)其中expression表示一個(gè)字符串,conversion則表示這個(gè)字符串的輸

52、出格式。 Oconv("10", "MB")的功能是把十進(jìn)制數(shù)"10",轉(zhuǎn)化為二進(jìn)制數(shù)"1010";而 Oconv("10", "MD1")的功能是把十進(jìn)制數(shù)"10"的小數(shù)點(diǎn)左移一位,轉(zhuǎn)化為"1.0"。 DSLogInfo (Message, CallingProgName)和DSLogWarn (Message, CallingProgName) 的功能十分相似,都是在執(zhí)行Server Job的時(shí)候,輸入一些必要的日志信息,幫助用戶了

53、解程序的執(zhí)行情況。其中Message為輸出的日志信息的內(nèi)容,CallingProgName就是調(diào)用這個(gè)函數(shù)的程序名。區(qū)別在于DSLogInfo輸出的僅僅是普通的日志信息,而DSLogWarn則是輸出一些警告的信息給用戶。例如:Ans="OriStr is blank, maybe there is no lights in this room"Call DSLogWarn(Ans,"TransBitMask")Call DSLogInfo("OriStr:" : OriStr : " is valid","

54、;TransBitMask")(4). 兩種循環(huán)條件語(yǔ)句a). ForNext語(yǔ)句,其基本語(yǔ)法如下:For variable = start To end Step incrementloop.statements Next variable其中start To end定義了變量變化的區(qū)間;而increment定義了每次變量增加的值,當(dāng)start的值大于end的值,increment的值可以是負(fù)數(shù)。For num = 1 To arrCnt - bitCount mask = "0" : maskNext num如果二進(jìn)制數(shù)的位數(shù)小于子串的個(gè)數(shù),則在二進(jìn)制數(shù)mas

55、k的前面補(bǔ)上"0"。比如,OriStr中有三個(gè)子串"light_01,light_02,light_03",BitValue的值為2,把十進(jìn)制的數(shù)"2"轉(zhuǎn)化為二進(jìn)制的數(shù)"10"。這時(shí),二進(jìn)制數(shù)的位數(shù)小于子串的個(gè)數(shù),就需要在二進(jìn)制數(shù)前面補(bǔ)上"0",使其變成"010"才能和三個(gè)子串一一對(duì)應(yīng)起來(lái)。b). LoopRepeat語(yǔ)句,其基本語(yǔ)法如下:LoopstatementsWhile | Until condition DostatementsRepeat其中,Loop定義了循環(huán)的

56、開始,Repeat定義了循環(huán)的結(jié)束。While condition Do 的含義是,當(dāng)條件為真的時(shí)候執(zhí)行循環(huán)體中的代碼。當(dāng)條件為假的時(shí)候,退出循環(huán)。 Until condition Do 的含義正好相反,當(dāng)條件為假的時(shí)候執(zhí)行循環(huán)體中的代碼。當(dāng)條件為真的時(shí)候則退出循環(huán)。例如:pos = 1 start = 1 Ans="" Loop While pos <= arrCnt Do idx = Index(proStr,separator,pos) If maskpos,1 = "1" Then subStr = proStrstart,idx - st

57、art subStr=trim(subStr) *make sure every substring matches the specified pattern If subStr match "5A" : "_" : "2N" Then Ans=Ans:",":subStr End Else Ans="error substring:" : subStr:".It does not match the pattern." Call DSLogWarn(Ans,"T

58、ransBitMask") GoTo ExitFunc End End start = idx+1 pos+=1 Repeat這段代碼的功能是從輸入的字符串中把每一個(gè)子串分離出來(lái),然后判斷每一個(gè)子串對(duì)應(yīng)的二進(jìn)制數(shù)中的值是否為"1"。如果其對(duì)應(yīng)的數(shù)是"0",就直接進(jìn)行下一個(gè)循環(huán)去處理下一個(gè)子串。如果其對(duì)應(yīng)的數(shù)是"1"則繼續(xù)判斷這個(gè)子串是否符合命名的規(guī)則,如果符合就把子串添加到輸出字符串中;如果不符合規(guī)則就在日志信息中提示用戶輸入的字符串有錯(cuò)誤,之后跳出循環(huán)。在循環(huán)語(yǔ)句中可以使用兩個(gè)用來(lái)控制循環(huán)的關(guān)鍵字Continue和Exit:Continue用來(lái)結(jié)束本次循環(huán),進(jìn)行下一次循環(huán);而Exit的功能是退出當(dāng)前循環(huán)。(5). 一些

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論