a. 在ODBC数据源管理器中新建一个数据源连接至你要创建Repository的数据库(例:jzjxdev)
b. 要在你要连接的数据库中新建一个用户(例:name: ETL password: ETL)
现在你可以创建一个Repository了。选择Repository – Create Repository,输入Repository Name(例:JZJX),Database Username(例:etl),Database Password(例:etl),ODBC Data Source(例:jzjxdev),Native Connect String(数据库所在ip例:141.20.52.108)
选择Tools菜单下的Source Analyzer,然后选择Sources菜单下的Import from database,连接想要连接的数据库,连接上后选择你要抽取的表点击ok你所选择的表就会出现在Sources文件夹下。
说明:上面的导入过程导入的只是表结构,你也可以自己创建来源表,只要你创建的表的结构跟真实存在的那张表的表结构一致就行。
-----------------------------------------------------------------------------------------
问:
要求实现每天抽取数据,而且是如果有改变才抽取更新,没有就不更新,
因为源表中有最后修改时间的字段,我让它 和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,
可以不用理会真实表结构中是否有主键
问:
我通过客户端连接到服务器,做了一个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的。
问:
创建一个工作流从一个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用不同的用户创建的不同的folder,互相看不见是什么原因那?
答:
保护机制的作用,建folder的时候,在安全选项里可以设置!~
把read权限赋给 repository user就可以了
也有可能是启用了 version control 的原因
问:
我的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.
问:
我用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里重新启动后再运行看看(问:过一阵子之后再运行就正常了。不知道为什么?怪怪的~~~)
问:
我在执行某个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.
谢谢!!找到原因了,原来是某一个字段的连接线没有连上导致的错误。可是我有个疑问,为什么有的控件出现这种情况的时候就没
有问题呢??
问:
我们这里是异地开发,从北京拿过来的mapping,在那里都可以跑通,而且没有任何问题,但是怎么拿到我这里就提示joiner输入字
段没有排序呢?问题可能发生在什么地方呢?
答:
你的join 控件应该是来自同一个数据源的,你在join 控件前增加一个Sorter 控件,将join 的输入数据源排序。
问:
求教,要import一系列mapping,但是codepage不一致,应该怎么调整?
答:
codepage 不一致,一定得改..反正一个XML,只需要改两个地方..如果XML很多,写一个小程序,会方便点..如果少,手工改一下就好了.
一系列的xml?? 是指很多,是吗?
1.建议你在导出时,用rep manager, 将很多对象打一个包导出.
2.pmrep 命令行,有个object import 功能,写一个批量的 .bat 导了
问:
请教各位大侠:我要用PowerCenter复制一个数据库,源库是一个SQL Server的数据库,目标库是DB2数据库,请问怎么做?
答:
一个表一个表的做。
如果想一次复制所有表,干脆用SQL server的DTS好了。
如果是整个库的话,不如用DB import/export了..ETL强调的是T..
问:
环境:
在一台机器上安装了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
Re-start the Informatica Services Windows service.
Try it again, please let me know the result.
问:
我们的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的问题,我使用的是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
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.**,... 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 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转行中!
问:
大家好,请教一个问题, 安装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. 安装过程和以前一样,为什么在虚拟机上就成功安装呢, 之前安装成功也是在虚拟机上, 另一个同事也是在虚拟机上安装成功的. 感谢楼上的各位.
请大家分析一下为什么虚拟机上成功安装,而实体机却安装时报连接不上,而导致安装不成功呢?
问:
我最近在设计一个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 呀.
问:
: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 时,导入结构会有问题.
问:
请教各位高手,如下记录:
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 列))