天天看點

Informatica學習筆記

Informatica學習筆記 2007年11月27日 星期二 09:47

Informatica學習筆記1:UPDATE AS INSERT

問:

要求實作每天抽取資料,而且是如果有改變才抽取更新,沒有就不更新,

因為源表中有最後修改時間的字段,我讓它 和SESSION上次運作時間比較來解決是否抽取,

但問題是有的表中沒有主鍵,我該怎麼實作更新呢 ?

有主鍵的我在WORKFLOW的MAPPING裡面勾上了UPDATE ELSE INSERT

那沒主鍵的用 UPDATE AS INSERT 行麼?

還有UPDATE AS INSERT 什麼意思啊,能解釋的形象點麼?

答:

UPDATE AS INSERT 就是

語句一: update tab_name set c1= value1 ,c2 = value2 where c_prikey = value_pri

語句二: insert into tab_name values(******)

當在 tab_name的c_prikey找到有等于value_pri的,就執行語句一把所有對應的記錄update。

當沒有比對的,就執行語句二。

你可以powercenter的 source defination中的自己定義主鍵,也可以直接 override update sql,

可以不用理會真實表結構中是否有主鍵

Informatica學習筆記2:用戶端連接配接伺服器

問:

我通過用戶端連接配接到伺服器,做了一個workflow,運作的時候出現錯誤,說是伺服器連接配接不上

repository server和infomatic server他倆的port是不是要一樣還是不需要?

答:

看看server 的配置..我想可能是沒有配置好.

問:

Repository server服務起來了,就是informatica server起不來了,在配置的時候,是informatica server的ip解析不出來,怎麼才能把那個位址和主機對應起來

答:

1.直接寫IP

2.編輯用戶端的%WINDOWS%/SYSTEM32/DRIVERS/ETC/HOSTS檔案,把ip與名字的對應關系加進去,用戶端這台機器就可以自己解析了

3.找DNS或者什麼解析伺服器搞定。

問:

informatica server裝在unix作業系統下,能不能找到配置informatica server的配置檔案對應的是那一個檔案.

答:

unix下預設是pmserver.cfg,可以用pmconfig這個指令行工具修改配置檔案,也可以直接打開編輯。

如果不是預設的配置檔案名可以通過, ps -efl|grep pmserver看看是哪個檔案名。

問:

謝謝,pmserver.cfg這個檔案中的配置資訊我看過了,裡面設定的都是repository server ip:192.168.0.1和port:6001,怎麼找不到配置的informatica server的ip:192.168.0.1和port:4001我是想知道這個資訊在配置檔案中能找到嗎?

答:

這個是在workflow manager裡面注冊的。輕按兩下server名字就看得到了。

問:

是的,我在workflow manager裡看到過,隻要在那裡注冊好了就行了嗎,我想它應該存放在什麼位置

是以想搞清楚,還是謝謝你.

答:

他存放在政策庫的opb_server_info表裡面,呵呵。你也可以試試看直接改資料庫。

不過直接改資料庫這種事情要悄悄的幹,被david知道了要打pp的。

Informatica學習筆記3:workflow問題

問:

建立一個工作流從一個txt檔案到目标表,是不是要定義.par參數檔案 有沒有誰有這方面的資料教程,給我發一份,非常感謝!~我建立了一個,運作的時候出錯了:(Server10) Start workflow: Request acknowledged

(Server10) Start workflow: ERROR: Error in starting execution of workflow [id = 8] [wf_s_m_test]. Please check the server log for more information.

答:

沒必要非得定義參數檔案,直接在session 中,指定路徑和檔案名就行..如果是同結構批量的檔案,可以用file list 功能..

參數檔案也能作,相對來說是在外部控制路徑和檔案名,比較動态了.

那個錯,不是讓你去看 server log 嗎.. 去看看了.

window 平台,default 去看事件管理器

Informatica學習筆記4:Folder權限的問題

問:

Informatica用不同的使用者建立的不同的folder,互相看不見是什麼原因那?

答:

保護機制的作用,建folder的時候,在安全選項裡可以設定!~

把read權限賦給 repository user就可以了

也有可能是啟用了 version control 的原因

Informatica學習筆記5:建立Repositories的時候出錯

問:

我的Infromatica是安裝在英文版的Windows環境下的,Matadata要放在Oracle9i中,可是當我在建立Repository的時候怎麼也連接配接不上我的Oracle9i資料庫,而我用其他方式連接配接資料庫是暢通的,在Windows的事件檢視中看到如下資訊:

(368|752) Failure in running command-line request type[100401] [pmrepagent create -r "TCS" -t "Oracle" -u informatica -c Oradb -d "MS1252" -h tcs-china.db -o 9999 -H "tcs-china.db" -O 5001 -K 2082340862]. Error is [An error occurred while creating the repository.].

答:

建repository在"Repository Server Administration Console"裡面可以找到Active Log的,可以看看出錯資訊,出錯多的好像都是插入一個LONG的值,通常建政策庫出問題都是字元集搗的鬼,幾個地方要注意資料庫的字元集,系統NLS_LANG環境變量,作業系統的預設字元集(windows在地區設定裡面看,還有預設輸入法也可能影響),理論上不同的字元集隻要是可轉換的,都是可以的,不過弄成一樣的比較簡單了。

問:

謝謝guruhao的提示和幫助,我決定将Oracle和Informatica重新安裝一下再來測試一次,

我的作業系統的預設字元集(windows在地區設定裡面)是china

系統NLS_LANG環境變量是N/A

答:

這一段都是正常的,drop table不成功,屬于建庫之前清理表的動作,

還要往後,大約在中間的位置。有個真正的插入資料的錯,

你最好設定一下NLS_LANG使之與oracle server的字元集相比對。

it should be Oracle characterset is not same in Oracle Server and client.

Informatica學習筆記6:建立workflow的問題

問:

我用powercenter8建立一個mapping後,在workflow manager中建立了workflow,但是運作這個workflow時卻提示以下錯誤資訊:

Could not start execution of this workflow because the current run on this Integration Service has not completed yet

我檢查了一下:server中的各服務已經正常啟動了,但是就是運作時出現這種情況,請問是什麼原因導緻的??以及怎樣解決呢???各位知道的就請說一下吧。

答:

該錯誤應該是說你建的這個workflow正在運作,且還沒有結束,因而你不可以再次啟動該工作流。你可以通過Monitor觀察一下。

問:

該錯誤應該是說你建的這個workflow正在運作,且還沒有結束,因而你不可以再次啟動該工作流。你可以通過Monitor觀察一下。

但是我在monitor中又看不到任何的session在運作啊~

答:

将你的informatica server在service裡重新啟動後再運作看看

(問:過一陣子之後再運作就正常了。不知道為什麼?怪怪的~~~)

Informatica學習筆記7:workflow執行報錯

問:

我在執行某個workflow 的時候報了如下錯誤:

FATAL ERROR : Unexpected Condition in file [/u05/bld65_64/pm713n/server/dmapper/widget/wjoiner.cpp] line [3176]. Contact Informatica Technical Support for assistance. Aborting this DTM process due to an unexpected condition.

請問各位這是什麼原因?我看了一下日志檔案,好像是初始化的過程都還沒有結束就報錯了。

答:

This error occurs when the Joiner transformation in the mapping has become corrupted.

To resolve this do one of the following:

1. Delete and re-create the Joiner transformation.

2. Export and import the mapping replacing the mapping when importing it.

謝謝!!找到原因了,原來是某一個字段的連接配接線沒有連上導緻的錯誤。可是我有個疑問,為什麼有的控件出現這種情況的時候就沒有問題呢??

Informatica學習筆記8:提示joiner輸入字段沒有排序

問:

我們這裡是異地開發,從北京拿過來的mapping,在那裡都可以跑通,而且沒有任何問題,但是怎麼拿到我這裡就提示joiner輸入字段沒有排序呢?問題可能發生在什麼地方呢?

答:

你的join 控件應該是來自同一個資料源的,你在join 控件前增加一個Sorter 控件,将join 的輸入資料源排序。

Informatica學習筆記9:import一系列mapping

問:

求教,要import一系列mapping,但是codepage不一緻,應該怎麼調整?

答:

codepage 不一緻,一定得改..反正一個XML,隻需要改兩個地方..如果XML很多,寫一個小程式,會友善點..如果少,手工改一下就好了.

一系列的xml?? 是指很多,是嗎?

1.建議你在導出時,用rep manager, 将很多對象打一個包導出.

2.pmrep 指令行,有個object import 功能,寫一個批量的 .bat 導了

Informatica學習筆記10:複制資料庫的問題

問:

請教各位大俠:我要用PowerCenter複制一個資料庫,源庫是一個SQL Server的資料庫,目标庫是DB2資料庫,請問怎麼做?

答:

一個表一個表的做。

如果想一次複制所有表,幹脆用SQL server的DTS好了。

如果是整個庫的話,不如用DB import/export了..

ETL強調的是T..

Informatica學習筆記11:informatica services不能啟動

問:

環境:

在一台機器上安裝了informatica services+client+oracle 10g(作為repository)。informatica的版本是8.1.1,啟動informatica services時沒有錯誤,但是過幾分鐘就停了。日志資訊catalina.out如下:

2006-11-28 16:12:46 org.apache.coyote.http11.Http11Protocol init

資訊: Initializing Coyote HTTP/1.1 on http-6001

2006-11-28 16:12:46 org.apache.catalina.startup.Catalina load

資訊: Initialization processed in 1234 ms

2006-11-28 16:12:46 org.apache.catalina.core.StandardService start

資訊: Starting service Catalina

2006-11-28 16:12:46 org.apache.catalina.core.StandardEngine start

資訊: Starting Servlet Engine: Apache Tomcat/5.0

2006-11-28 16:12:46 org.apache.catalina.core.StandardHost start

資訊: XML validation disabled

2006-11-28 16:12:47 org.apache.catalina.core.StandardHost getDeployer

資訊: Create Host deployer for direct deployment ( non-jmx )

2006-11-28 16:12:47 org.apache.catalina.core.StandardHostDeployer install

資訊: Processing Context configuration file URL file:c:/Informatica/PowerCenter8.1.1/server/tomcat/conf/Catalina/localhost/adminconsole.xml

java.lang.UnsatisfiedLinkError: D:/Informatica/PowerCenter8.1.1/server/bin/pmjrepn.dll: ???????¨????ò??

前幾天一直運作正常,請問各位高手,該問題如何解決,謝謝!

答:

This error will occur when there is there is an incompatible xerces-c_2_4_0.dll file on the Windows machine.

To resolve this do the following:

Stop the Informatica Services Windows service.

Go to the C:/WINNT/system32 directory.

Rename the xerces-c_2_4_0.dll file to xerces-c_2_4_0.old.dll.

Copy the xerces-c_2_4_0.dll file in the<INFA_HOME>/server/bin directory to the C:/WINNT/system32 directory.

<INFA_HOME> is the Informatica installation directory.

Re-start the Informatica Services Windows service.

Try it again, please let me know the result.

Informatica學習筆記12:從mysql抽取資料的字元集問題

問:

我們的source資料庫是mysql,字元集是utf8. 現在要用informatica從中抽取資料并生成文本,用于下一步的ETL處理。informatica server的code page是ISO 8859-1. 結果中文字元總是抽取不成功。請問如何處理才能正确抽取中文字元?

答:

informatica server的code page是ISO 8859-1 ,你得改成UNICODE的模式,才可以比較适合作轉換..你在workflow manager中的那個ODBC的連接配接,應該也有codepage的設定吧..改改試試..

問:

informatica server的code page是ISO 8859-1 ,你得改成UNICODE的模式,才可以比較适合作轉換..你在workflow manager中的那個ODBC的連接配接,應該也有codepage的設定吧..改改試試..

謝謝斑竹。

問題是我沒辦法去改informatica server的配置。如果就用目前配置,有可能做到正确抽取中文麼?能夠做一些編碼的轉換來實作麼?

答:

亂碼,就找幾個點的碼制設定了..

源就那樣了, ETL伺服器上配的ODBC,可能會有codepage 相關; 再就是ETL 伺服器, 你已設為ISO 8859-1,如果不對中文資料作轉換,應該不會亂; workflow manager中,配置ODBC我忘了是不是也有code page 設定了..就這麼幾塊..你分開檢查一下了.

你用個什麼工具,通過系統ODBC去通路一下,如果看到的不是亂碼,再從後面幾點排這個錯了..

(修改了連接配接mysql的odbc,加上 stmt=SET NAMES 'utf8' 就好了,謝謝斑竹!)

Informatica學習筆記13:沒有Lincense導緻的問題

問:

各位兄弟們幫忙看一下,informatica的問題,我使用的是6版本,目标資料庫是oracle 10g,在安裝好,配置好的時候,執行workflow的時候報這樣的錯誤

CMN_1022 Database driver error...

CMN_1022 [

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Database driver error...

Function Name : Connect

Database driver error...

Function Name : Connect

Database Error: Failed to connect to database using user [test_loc] and connection string [192.168.1.42].]

答:

你用的是ODBC..是UNIX下,還是window?

為什麼不用Oracle native driver?

這個看起來,像是你在系統建的ODBC,沒有找到..

你在系統的ODBC,建立一個連接配接,例如: odbc_ora_hr

,測試一下,看是不是能連接配接到遠端的oracle server.

你在workflow manager中,建立ODBC時,那個connectstring 寫上這個名字.odbc_ora_hr

如果在系統的ODBC是通的,應該就可以了吧.

問:

ODBC用的是informatica自帶的odbc安裝的,用的是window的,我也想用oracle 的驅動,但是我沒有oracle 的Lincense key,我隻有odbc的是以隻能用odbc的了,系統odbc配置的圖和workflow manager中配置odbc的圖和你說的一樣,配置好後,報的錯誤還是一樣的,急死了

答:

問題解決了,是key有問題!

艾!沒有informatica的Lincense

Informatica學習筆記14:lookup中自定義sql有問題

powercenter 7.1 windows平台

source table w_test_fs

target table w_test_f

源表和目标表中都有字段col1和col2,這兩個字段可以看作是聯合主鍵吧 建了個unique index

mapping流程大概說一下

1.從源表取資料 select fs.col1,fs.col2,fs.xxx,... from w_test_fs fs

2.建lookup(從w_test_f),in的字段就是上面select出來的col1和col2,比較字段是w_test_f中的col1和col2,取出w_test_f中的主鍵

select f.row_id,f.col1,f.col2 from w_test_f f, w_test_fs fs where f.col1=fs.col1 and f.col2=fs.col2

3.建filter, 把lookup找出的lookup_row_id和步驟1選出的字段傳給此filter

filter條件是isnull(lookup_row_id)

4.進入目标表

現在的問題是:

源表和目标表資料條數是一樣多了(之前跑過,那時目标表是空的) 就是說對于col1和col2來說,兩個表是一樣的

用sql可以驗證

select fs.* from w_test_fs fs where (select f.row_id from w_test_f f where f.col1=fs.col1 and f.col2 = fs.col2) is null;

執行這條sql查出0條記錄

但我運作上面的mapping 還是有資料流過filter

遇到過有部分資料流過(filter起了部分作用)、也遇到過資料全部流過(filter沒起作用) 當然對應的mapping是不一樣的

我上面的mapping隻是個例子 規則是一樣的

請問大家遇到過或者有什麼建議沒有?

答:

已找到部分原因

lookup中自定義sql有問題

Informatica學習筆記15:infopower如何實作增量抽取?

問:

在 informatica powercenter中如何實作增量抽取?我想了一下使用時間戳,但是這個時間戳如何去使用不是很明白,希望各位高人在這邊能指點一下,如果有例子更好,在這裡先謝謝了!

答:

有時間戳就直接用呗,總有個辦法記錄上次抽取的時間的,也有辦法設定本次的截止日期

然後 where timestamp > last_time and timestamp <= current_time

有時間戳的系統和工具沒啥大的關系

問:那在參數中如何去調用呢?

答:

這個你看看mapping 的參數和變量那塊吧.. help 當中有詳細寫..你這樣問,太大,誰也很難花時間去詳細寫的.

關于增量抽取的問題,我在help裡看到了以下内容:Use the following filter to incrementally extract data based on the SALES.sales_datetime column in the source:

SALES.sales_datetime > TO_DATE (`$$LastUpdateDateTime') AND SALES.sales_datetime < TO_DATE (`$$$SessStartTime')

小聲的問下:這個時間戳的時間一定要是來自源表中某個字段值嗎?如果源表中沒有這樣的時間字段,怎麼辦?

1.從源中找到變化和增量辨別(可能是時間字段或一些業務字段,辨別位之類的),這樣比較容易作.

2.現在有一些工具是可以從DB的log層面解析變化資料的,這樣,就可以不用這樣考慮了.

3.從DB的功能角度去想辦法,找到增量或變化資料的方法,像oracle 有物化視圖.

4.還有一些建資料庫觸發器或全表比對..

5. EAI..

還有一些方法吧,但多半用上面幾種吧.

1保證要做的資料源中有标示更新的時間戳和标示邏輯删除的字段!

2在mapping設計中設定mapping變量,用來記錄每次執行etl過程時的資料庫時間(注意是源系統的資料庫時間)

3記得更新mapping變量~其餘的就不用說了

呵呵,向SuperGlue轉行中!

Informatica學習筆記16:informatica 8.1 安裝問題

問:

大家好,請教一個問題, 安裝8.1時 每次安裝到 connecting to repository service 時,總是過不去,連接配接不上, 報cannot connect to repository service, 彈出一個視窗,列出了一些資訊,然後有2個選項, 重試 和 忽略.

彈出的資訊如下:

The installer created the Repository Service, but could not enable it. Use the Administration Console at http://smu-o7542xepp54:6001/adminconsole to correct the error and enable the service. You can get more information in the Repository Service logs in the Administration Console Log Viewer. Select Ignore to continue with the installation and enable the Repository Service after installation.

STDOUT:

......

請教大家,為什麼連接配接不上RESPOSITORY SERVCIE啊, 2個資料庫連接配接測試都是 測試通過.

答:

和db 操作一樣, 可以connect 隻是前提保證,在執行大的SQL時,因為權限,網絡,字元集不統一或大SQL的原因,極有可能會失敗.

你先描述一下,你所有DB是啥吧..不同資料庫,反應是不同的.

問:

SQL SERVER 2000開發版+SP4+WINXP SP2 和 SQL SERVER 2005+sp1+ win2003 server+sp1 楊曉東說推薦用ORACLE , 但之前我們在sqlserver2000和2005上都安裝成功了,現在安裝總是在上面的步驟通過不了,連接配接不上.

建2個資料庫,2個使用者,連repository庫時,我幹脆用sa登陸,都連接配接不上repository services.

網絡方面,我是伺服器,用戶端都裝在我的本上,都是本機

字元集方面, 我拿到的8.1是中文版的,作業系統也是中文版的. 之前用7的時候是英文版,那時候OS裝的也是英文的,都是統一的.

答:

你先登入到 http://smu-o7542xepp54:6001/adminconsole

user: admin

password 用你設定的那個, 進到console 頁面,點選repository 圖示,右面會顯示一些紅色的錯誤資訊,你再看看log 那個tab 頁上,會有詳細的錯誤資訊. 那裡的資訊,會比較細.

這肯定是DB在執行SQL時,報的錯。。。是不是和網絡的firewall 有關系? 以前SQL SERVER出問題,多半都是網絡,firewall 和SQL SERVER的設定上。

我曾在SQL SERVER上安裝過pwc8.x,是沒有問題的。 你找到那些詳細資訊,如果還不行,把資訊貼出來。

我前幾天也裝過知識庫用SQL Server2000的,好象沒什麼問題,不過就是覺得在建知識庫那的connectstring要用:主機名@資料庫名 這點不知道樓主注意到沒有,這個環境下還沒有碰到過其他問題

還有一個資料庫隻能對應一個知識庫的,如果之前在某一資料庫上建過知識庫,那麼第二次再在此資料庫上建知識庫也是無效的.是以,建domain的資料庫和建知識庫的資料庫最好分開,要建知識庫的資料庫最好是空庫,至少也是不能有存放知識庫的中繼資料.如果domain和知識庫裝在同一資料庫中,那麼隻清除知識庫的中繼資料而不清除domain資訊,直接在資料庫裡頭不太好清,最好是在控制台中對知識庫用delete content然後删除知識庫.

我講的可能不是樓主的問題的解決方法.僅僅和大家分享一下小經驗.

問:

在虛拟機上終于搞定, WIN2003SP1+SQLSERVER2005SP1. 安裝過程和以前一樣,為什麼在虛拟機上就成功安裝呢, 之前安裝成功也是在虛拟機上, 另一個同僚也是在虛拟機上安裝成功的. 感謝樓上的各位.

請大家分析一下為什麼虛拟機上成功安裝,而實體機卻安裝時報連接配接不上,而導緻安裝不成功呢?

Informatica學習筆記17:如何在PowerCenter中實作累加SUM

問:

我最近在設計一個mapping時,遇到一個問題:這個mapping要做的是,聚合(SUM)源表

(BUSI_T_ENTRY)中的借方金額(DEBITAMOUNT)字段值,groupby的字段是源表中的年(ACCOUNTYEAR),月(ACCOUNTMONTH),地區(AREA_CODE)三個字段。但是在做SUM的時候,是要做一個累進的SUM,比如說:當做2006年3月的SUM值時,2006年3月的SUM值是等于2006年1,2,3月的合計值。

我現在的做法是先在Aggregator中按年,月,地區分别做好當年每個月的SUM值,然後再到下一個Expression中根據月(ACCOUNTMONTH)來做累加(比如,當月等于3時,我就把1,2,3月的SUM值加起來做為3月的聚合值),可是我這樣做的時候,出來的結果,總是累加不起來,3月值仍然等于3月的當月SUM值。

請教各路大俠怎樣做可以實作我的需求?或是我的做法有什麼問題,需要怎麼來改進?

答:

先将結果集排序..然後,你看看 cume 函數..應該可以作.

用cume好像不解決問題呀,這個隻按月累加的,不同地區和年要清零的。cume隻能一直累加下去,可以用local variables,可以保留上一條的資訊

設定三個變量,PRE_AREA,PRE_YEAR,CUME_VALUE,其中CUME_VALUE差不多是這個樣子,

IIF(ACCOUNTAREA = PRE_AREA AND ACCOUNTYEAR = PRE_YEAR, CUME_VALUE + AMOUNT, AMOUNT )

當然要注意按地區,年,月先排序。具體可以參照随機文檔裡面的Using Local Variables ->Store Values Across Rows。

想了想,在aggregator裡面用cume遇到不同的group by條件後,應該是可以自動清0的,是以還是用cume簡單些。

我覺得 cume 能實作, 實在不行,一次隻處理一年的(這樣考慮的東西少,最簡單),用參數控制一下where子句..實在不行,可以考慮,将地區,年,月,合成一個字段..這個咋都能作..

能作的方法有多種..但我覺得這種最簡單.

問:

我現在目前就是隻處理一年的,上午我試了下,用cume是可以的做的,但是以後肯定是不止一年的資料。

還有David說:”把地區,年,月合成一個字段,這咋都能作“,我有點不了解,能具體一點點嗎?

答:

字元串與呀..

我覺得還是一年一年處理比較好..

你可以作一個session,用參數來控制where 子句,每次作一年的...你用外部一個程式控制改變這個參數,并多次執行(pmcmd )..這樣比較簡單..

我知道把地區,年,月合成一個字段是字元串與,我的意思是說:把地區,年,月合成一個字段後,在我做累積SUM的時候怎麼來用,為什麼這樣就可以”咋都能作“了?

不好意思,剛剛沒講清楚。:)

再用cume 呀.

Informatica學習筆記18:PC8.1運作出錯

問:

:confused:

版本PC8.1

用了一個最簡單的例子,就源和目标的一個一一映射。應該說不會是流程的問題和參數設定問題。

運作後錯誤日志如下:

Message: *********** FATAL ERROR : Unexpected Condition in file [/ZeusbuilderProduction/view/powrmart/common/odl/oracle8/oradriver.cpp] line [241]. Contact Informatica Technical Support for assistance. Aborting this DTM process due to an unexpected condition. ***********

懷疑是不是PC8.1檔案被破壞了,請各位高手指點一下可能會是什麼問題??

答:

你的這個問題,不是找到原因了嗎..減小sorter 的cache 或增大 swap space..

看着像是ODBC方面的問題。

兩個建議:

1.重新開機機器,試一下。有時安裝完,沒有重新開機,有些變量沒有生效,會報這類問題。

2. 請用 DataDirect ODBC,重新導入源和目标結構,再作一個簡單的例子,試一下。

問:

建議:

1,我的PC8已經安裝很久了(不過lisence還沒過期,改過系統時間啦),是以呢機器已經重起很多次啦,應該不是這個問題

2,源和目标也重新導過,一樣報錯,另外我不管哪個task都是報這一樣的錯,是以應該不是某個元件的參數設定不合理(最後一次做的一個mapping根本就沒有用到轉換元件)

還有一點,我現在用的是PC8.1.0版本,但之前在這個知識庫裡還原進來的是PC8.1.1的.rep檔案,是以我懷疑是不是版本不相容,但是今天我又把PC8.1.1的知識庫删了(隻是把知識庫及其内容删了,沒将存放知識庫的oracle使用者删了重建),然後又建立了個PC8.1.0的新知識庫,在這個平台下又做了mapping,運作後還是報一樣的錯。。。

你說的ODBC的問題我也想過,但不知道怎麼來檢查,因為錯誤資訊裡的那個路徑我還沒找到。。希望指點一下

答:

你是按我說的用 datadirect ODBC建立一個ODBC,再用designer導入源,目标,作一個簡單的mapping。。在workflow manager 中,你可建立基于oracle native driver的連接配接。

這個問題,就是ODBC的driver 不對。。要用 DataDirect 的那個

問題解決了。。。

原因是我導表結構時,使用的oracle提供的ODBC去導的。。driver是Oracle in OraHome92

這次我換了PC8提供的ODBC去導就好了,driver是DataDirect CLOSED ODBC 5.1 oracle wire protocol

問題是解決了,不過還是感到疑惑,這2個ODBC有什麼不同嗎,

疑問1,我用本地ODBC能導表結構說明本地ODBC應該沒問題,是不是PC8不支援這種使用方法

2,我試過用本地ODBC導表結構,然後運作workflow時仍然用本地ODBC去取數,但仍然報錯

3,我試過用oracle10g提供的ODBC導表結構,這樣做出來的mapping能正常運作

我大概記着點,好像是Oracle用戶端版本比較低,會有這個問題,是以1 時,導入結構會有問題.

Informatica學習筆記19:多行記錄合并問題

問:

請教各位高手,如下記錄:

a b c

-----------

1 a b

1 c d

1 e f

2 a b

2 c d

2 e f

如何做到

a

-----------------------------

1 a b c d e f

2 a b c d e f

答:

用變量作,比較好作。。

用變量記住上一次記錄的a 字段, if(pre_a=curr_a, then col_sum2||curr_b||curr_c as col_sum, else pre_b||pre_c as col_sum2), 可能最後加一個長度判斷,把長度不為最後要求長度的過濾掉..這樣作,好像不太靈活..

如果使用Sagent Data Flow的話至少有2種方法可以實作:

(1)利用pivot按行同時按列彙總的方式;

(2)表達式電腦中寫一個表達式即可:if ( ((GetValue("a",0)==PutValue("a",第 1 列) )))

then(PutValue("b",GetValue( "b",第 2 列+第 3 列 )+第 2 列+第 3 列))

else(PutValue("b",第 2 列+第 3 列))