Expression Tranformation in ODI

Hi,
I am trying to develop an existing informatica mapping in ODI.
my informatica ETL mapping design is like this:
Source Qualifier ----------->1st Exp Tranformation ---------------->2nd exp trnsf --------> lookup ------> insert/update
in the above design how can i implement 1st exp and 2nd exp transformations in ODI.
Thanks

Hi,
Thanks for the reply.
Yes,i used expression editor in one of my mappings.
in my question you can see 2 expression tranfrmations.
when i open target table expression editor i can apply the 1st exp transformations then how about 2nd exp tranformation which uses calculations from 1st.
Thanks

Similar Messages

  • What is the use of lookup tranformation in odi

    Hi Experts,
    What is the use of lookup transformation in ODI.
    In ODI we use different kinds of joins, so my doubt is what is the difference between lookup transformation joins and normal joins we use in ODI.
    Please let me know with your valueable information.
    Thx,
    Sahadeva.

    Use the SIM card to connect to the cell carrier 3G network when there is no wifi available.
    To set it up, see this -> http://support.apple.com/kb/HT4157

  • Java BeanShell expression in ODI

    hi experts,
    i am working on ODI 11 g (11.1.1)
    i have found java beanshell expression in standard ODI KM (IKM "IKM Oracle Slowly Changing Dimension", step 192 "Analyze integration table"):
    <%=odiRef.getTable("L","INT_NAME","A").replaceAll("","").replaceAll("..>",".replaceAll(odiRef.getInfo( \\u0022DEST_WORK_SCHEMA\\u0022 )+\\u0022.\\u0022,\\u0022\\u0022)?>")%>
    It translates, for example, "DWH_ETL.I$_SC_INTERMEDIARY" to "I$_SC_INTERMEDIARY"
    Please explain in detail how it works?
    specifically, i don't understand how works the expression:
    replaceAll("..>",".replaceAll(odiRef.getInfo( \\u0022DEST_WORK_SCHEMA\\u0022 )+\\u0022.\\u0022,\\u0022\\u0022)?>")
    Java function "replaceAll" (http://download.oracle.com/javase/6/docs/api/):
    public String replaceAll(String regex,
    String replacement)
    replaces each substring of this string that matches the given regular expression with the given replacement.
    What does mean the expression "..>" in this calling replaceAll?
    it looks like a nested call to the substitution API (http://www.business-intelligence-quotient.com/?p=812)
    thanks in advance

    HI,
    I have re configured as mentioned in your blog . But still getting same exception . Something I missed in my previous thread is below.
    <Sep 19, 2012 3:34:46 PM EDT> <Error> <HTTP> <BEA-101216> <Servlet: "AgentServlet" failed to preload on startup in Web application: "trellisagent".
    ODI-1400: Agent trellisagent start failure: JDBC connection error occurs while connecting to the master repository.
    Caused by: java.security.AccessControlException: access denied (oracle.security.jps.service.credstore.CredentialAccessPermission context=SYSTEM,mapName=oracle.odi.credmap,keyName=SUPERVISOR read)
    at oracle.odi.runtime.agent.servlet.AgentServlet.startup(AgentServlet.java:318)
    at oracle.odi.runtime.agent.servlet.AgentServlet.init(AgentServlet.java:226)
    at javax.servlet.GenericServlet.init(GenericServlet.java:242)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    I am stuck in asituation here :(
    Ashish

  • ODI JMS to SQL MESSAGESELECTOR

    Hi,
    Anybody had successful experience using ODI with JMS to SQL technology trying to consume messages from Weblogic Topic with MESSAGESELECTOR option? Having trouble that ODI consumed all messages from Topic indiscriminately whenever there was a MESSAGESELECTOR expression present from ODI Interface. Any suggestion/idea are welcome.
    AL

    There is definitely a message selector defined in the message. I am using Message Selector and ClientID (Subscriber ID) in LKM. It turns out that the subscriber needs to be configured with same message selector expression. Otherwise when ODI hit the subscriber, it behaves as if it is setting the message selector on the subscriber in Weblogic, and the setting operation will reset all messages.
    Not sure if this is documented anywhere ( ODI or Weblogic ).
    Thanks
    Albert

  • Exception while trying to insert data into Target Table

    Hi ,
    Im trying pick data from a table A which is in DB1 and trying to insert table B which is in DB2 .Below are the steps which I did.But im getting the exception
    *"Caused By: java.sql.SQLSyntaxErrorException: ORA-02019: connection description for remote database not found:"* .Can some one help me with this .
    Note : The DB that im using is Oracle 10g Express Edition and ODI studio is ODI 11.1.1.5.0
    1.Created a two Data Server -one for each Data base (DB1 and DB2)
    2.Created two Physical Schema under the respective Data Server
    3.Created two Logical Schema referring respective Physical Schema
    4.Created a two Models for each Logical schema and did Reverse Engineer
    5.Created an Interface , imported the Knowledge models and did the mapping between the Source and Target Data Source
    KM's used :
    Source data store-Staging Area-LKM Oracle to Oracle (DBLink)
    Target Properies-IKM Oracle Incremental Update
    I unchecked Stagin Area Different from Target .
    Thanks
    John

    Hi John,
    I think you need to create public database link then create public synonym
    After creating that, please check it from DB side it is working or not, then check from ODi end and go thru below URL hope this will helps you.
    https://forums.oracle.com/forums/thread.jspa?threadID=530074
    Thanks,
    Phani

  • Using pl/sql functions for transformation

    How can I use pl/sql functions in the transformation mapping field for my interface?
    I have a name field where firstname and lastname are concatenated via a space-character and I would like to extract this 'name' field to 2 separate database attributes.
    This means that I need to use a function that uses SUBSTRING and INSTR to be able to get the firstname and lastname separatly out of the name-field.
    The INSTR-function isn't known inside the expression editor in ODI so I'm wondering how I can use my own function?

    Hi Romanna,
    Are you sure? Where did you do your transformation?
    -Source, Staging area or Target
    I try this on Oracle target...
    FIRST_NAME = substr(MYTABLE.FIRST_LASTNAME, 1, instr(MYTABLE.FIRST_LASTNAME, ' ')-1)
    LAST_NAME = substr(MYTABLE.FIRST_LASTNAME,instr(MYTABLE.FIRST_LASTNAME, ' ')+1)

  • Not able to estabish connection with SQLServer2005 from the Topology Manage

    I have installed Oracle Data Integrator 10.1.3.4.0 and and Microsoft Sqlserver 2005 Management Studio Express in my windows system and created repository in Oracle Database 11g. I have also downloaded Microsoft SQL Server 2005 JDBC Driver Version 1.0 and placed the jar file in the <odi_home>/drivers Folder.
    I have to do a migration POC from Oracle DB 8i to Sqlserver(2005 express Edition) using ODI. In the Topology manager ,in the Physical Architecture
    I give the connections details : UserName :sa Password:sa that is the user of Sqlserver.
    Now in the JDBC Properties i give under jdbc Driver
    com.microsoft.sqlserver.jdbc.SQLServerDriver
    and jdbc URL
    jdbc:microsoft:sqlserver://10.177.62.148:1084
    The jdbc driver is not listed in the dropdown. I hardcode with com.microsoft.sqlserver.jdbc.SQLServerDriver which i found in ODI discussion forum.
    But I am getting the error ava.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(Unknown Source)
    Can anybody point me where I would be going wrong or is there any extra configuration I have to do.

    Hi Again,
    I have followed whatever you all have suggested. But could not succeed. Then I decided to use SQLServer 2000 express edition. Installed this in SQL authentication mode and I am able to connect from the management studio with the user sa and also from the command prompt. But again from ODI in the Topology manager I am facing the same problem.
    Now I select the default driver for sqlserver 2000 ie driver:com.microsoft.jdbc.sqlserver.SQLServerDriver
    and URL: jdbc:microsoft:sqlserver://10.177.62.148:1433
    or jdbc:microsoft:sqlserver://10.177.62.148:1433;SelectMethod=cursor
    gives me error javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    and unknown source at many places.
    I am using ODI 10.1.3.4 . Has anyone tested with the new release?

  • SQL expression in ODI

    I Have the following interface in oracle data integrator
    http://i44.tinypic.com/2mrsmxt.png
    # it execute successfully before inserting the following expression 
      In the mapping I insert the following SQL expression to get the average when the quantity is 0
    AVG(
    CASE WHEN TEST.QUN = 0 THEN
    (SELECT TEST.QUN FROM TEST
    WHERE TEST1.PRUDU=TEST.PRUDU
    AND TEST1.FLOW=TEST.UNIT
    AND TEST1.UNIT=TEST.UNIT
    AND to_char(TEST.DATEDDD,'MON')= to_char(TEST1.DATEDDD,'MON')
    AND TEST1.DATEDDD !=TEST.DATEDDD
    GROUP BY TEST.QUN
    ELSE TEST.QUN
    END)
    when I check this expression in ODI ..
    # the sql expression is correct for this  RDMS 
    when I executed the interface i get this error
    Caused By: java.sql.SQLSyntaxErrorException: ORA-00937: not a single-group group function
    any idea ?

    I changed the code a little ..
    CASE WHEN TEST.QUN = 0 THEN
    (SELECT AVG(TEST.QUN) FROM TEST
    WHERE TEST1.PRUDU=TEST.PRUDU
    AND TEST1.FLOW=TEST.FLOW
    AND TEST1.UNIT=TEST.UNIT
    AND to_char(TEST.DATEDDD,'MON')= to_char(TEST1.DATEDDD,'MON')
    AND to_char(TEST.DATEDDD,'YYYY')!= to_char(TEST1.DATEDDD,'YYYY')
    ELSE TEST.QUN
    END
    And I get this error ..
    ORA-01427: single-row subquery returns more than one row tips.
    The TEST Table from the source and TEST1 is a lookup table because I couldn't  do the alais in ODI
    In sql developer I did the following code that will do the same thing and work successfully ..
    update test B
    set B.qun=
    (SELECT AVG(TEST.QUN) FROM TEST
    WHERE  TEST.FLOW=B.UNIT
    AND TEST.UNIT=B.UNIT
    AND TEST.PRUDU=b.prudu
    AND TEST.FLOW=b.flow
    AND to_char(TEST.DATEDDD,'MON')= to_char(B.DATEDDD,'MON')
    AND to_char(TEST.DATEDDD,'YYYY')!= to_char(B.DATEDDD,'YYYY')
    where B.qun=0;
    any help ?
    thanksssss
    naif ..

  • Unable to See the Technology Function in The Expression Editor- ODI 11G

    Hi,
    I am developing Interface whereas i am unable to see the Technology functions in the Expression Editor where i am trying to do some transformation .
    Secondly in the Header it is showing Default language in place of SQL(Oracle)
    any fix please..
    Thanks,
    KP

    I fixed it myself- thanks
    Below was the step i did which resolved the issue. hope this will help others
    Go to ODI Studio
    In Topology- Expand Language
    Import New Language
    import in synonym INSERT_UPDATE mode
    The Language definitions from $ODI_HOME/oracledi/xml-reference/LANG_SQL.xml
    click OK
    close ODI Studio and Open again. that fixed my issue.
    Thanks,

  • Tranforming a Preference in Expression builder expression

    Hi there.
    I have a BPEL processo Preferecence populated with something like: concat('this is a test: ', bpws:getVariableData('inputVariable','payload','/client:TesteDescriptoresProcessRequest/client:input'))
    And when I do the ora:getPreference('TestPreference') I get a string with the expression that I whant to run/execute and assign to a variable.
    <result>
    concat('this is a test: ', bpws:getVariableData('inputVariable','payload','/client:TesteDescriptoresProcessRequest/client:input'))
    </result>
    But I want the result to be:
    *<result>*
    this is a test: 123
    *</result>*
    Someone knows how to tranform a string set in Prefereces to expression where i can use BPEL Expressions to assing values of variables ???
    I already tryed to do ora:ParseEscapedXML(ora:getPreference('TestPreference')) but isn't working.
    Thank you in advance.

    I'm still having that problem.
    Someone can help me ?

  • SQL Error : missing expression - Creating XML file with ODI

    Hi,
    I saw threads about errors like this and read that maybe it can come from how I chose the staging area. I still can't see where the problem is. I'm trying to create an xml file from data stored in a Oracle database. The interface which execution fails select data from tables and create a tag in the XML file. Here are information about it :
    The staging area is diferent from the target and is an oracle database schema. (I guess it creates temporary tables in that schema ?)
    In the flow tab, the LKM is LKM SQL to SQL, the option delete temporary objects is set to yes.
    The IKM choice for the target is IKM SQL Control Append and options are as following :
    - insert : yes
    - commit : yes
    - flow contreol : no
    - recycle errors : no
    - static control : no
    - truncate : no
    - delete all : no
    - create target table : yes
    - delete temporary objects : yes
    Columns mapping in the target are the following :
    WKID        >     THEADER.WKID
    EXTID        >     THEADER.EXTID
    ORDER     >     THEADER.ORDER
    INSTFK     >     THEADER.INSTFK
    For every column in the target :
    - Run on source
    - Updating : insert, update and ud4 are checked
    no update key is defined
    In the operator, the step failing when running the interface is the loading data in the work table.
    If you need the SQL request in the execution plan, or anything else, please tell me.
    Thank you in advance for any help on this.
    Marie

    It would help if you provide error message and its stack trace.
    Please also look at the documentation (If not already done so) for creating xml file XML Files - 11g Release 1 (11.1.1)

  • ODI Transformations

    Hi All,
    I am in the process of developing complex interfaces(mappings) using ODI.i did lot of development using other etl tool informatica.
    since i am in the initial stages....could you please help me in finding ways implement following transformations in ODI.
    1) Lookup tranformation
    2) Insert/update Transformation
    3) router transformation. etc...,
    and also suggest some good reference materials on the above topics.
    Thanks

    Hi,
    You have to work out your transformations in ODI designer .. "Diagram" and in "Flow" tabs.
    Now to do
    1. Lookup -- bring up the lookup tables in the datastore by reversing(same like ur source and target tables/views) and drag in the designer along with ur source for transformations. do ur txfm by either drag n drop or post ur query in the "Expression Editor" by selecting the target column.
    2. Insert/Update- will be controlled by ur ODI IKM`s (Incrementel Update)
    3. I dont know about router Txmf.
    Visit : http://www.oracle.com/technology/products/oracle-data-integrator/10.1.3/htdocs/1013_support.html for ODI docs
    Thanks

  • Aggregator Transformation in ODI

    Hi,
    How do i implement aggragation using ODI interfaces...
    transform the data accoridng to aggregator functions like
    MIN
    MAX
    AVG
    COUNT
    FIRST
    LAST
    MEDIAN
    PERCENTILE
    STDDEV
    SUM
    VARIANCE
    where do i specify the columns to be included in the group by function....
    for example in informatica we have aggreagator tranformation wherein we can specify the columns to be cinsodered in group by...
    Thanks

    Hi Ace2,
    When i use the aggregator function in the expression editor of the target column....i can see the group by function in the SQL in operator...
    but group by has all the other columns...
    say i have 10columns in my table....when i applicaed sum(coln1) then it is generationg the4 SQL as
    select sun(coln1)
    from table
    gorup by coln2 thru coln10
    i wqould like to specify only some of the columns in the group by clause....
    Thanks
    Is there any option to attach the screenshots here in this discussion forum.
    Edited by: user4315565 on Mar 22, 2010 3:51 PM

  • Help using oracle syntax "SUM(col1) over (order by col2)" using ODI

    Hi all
    I want to load data from oracle to ESSBASE using ODI, and I know oracle have such syntax sum(col1) over (order by col2,col3) which can get the accumulation data, e.g
    Oracle data table
    col1, col2, value
    A 2009-1 10
    A 2009-2 10
    A 2009-3 10
    And the essbase need
    col1 col2 value
    A 2009-1 10
    A 2009-2 20
    A 2009-3 30
    However after i try this in ODI, error occur:
    org.apache.bsf.BSFException: exception from Jython:
    Traceback (innermost last):
    File "<string>", line 32, in ?
    java.sql.SQLException: ORA-00979: not a GROUP BY expression
    and the original generated SQl by ODI :
    select 'HSP_InputValue' "HSP_Rates",MAP_KMDZ_TABLE.BUD_DYKM "Account",MAP_MONTH.ESS_MONTH "Period",MAP_YEAR.ESS_YEAR "Year",'Actual' "Scenario",'Draft' "Version",TEMP_LIRUN.CURRENCY "Currency",MAP_COMPANYCODE.ESS_COMPCODE "Entity",substr(MAP_KMDZ_TABLE.BUD_BUSINESSOBJECT,1,80) "BusinessObject",'Route_NoRoute' "Route",MAP_TRANSPORT.ESS_TRANSPORT "Transport",substr(MAP_KMDZ_TABLE.BUD_BUSINESSACTIVITY,1,80) "BusinessActivity",substr(MAP_KMDZ_TABLE.BUD_CHANNEL,1,80) "Source",'NoCounterparty' "Counterparty",sum(TEMP_LIRUN.DATAVALUE) over (order by MAP_KMDZ_TABLE.BUD_DYKM,MAP_YEAR.ESS_YEAR,MAP_MONTH.ESS_MONTH,TEMP_LIRUN.CURRENCY,MAP_COMPANYCODE.ESS_COMPCODE,MAP_TRANSPORT.ESS_TRANSPORT,MAP_KMDZ_TABLE.BUD_BUSINESSACTIVITY,MAP_KMDZ_TABLE.BUD_BUSINESSOBJECT,MAP_KMDZ_TABLE.BUD_CHANNEL) "Data" from ETL_DEV.TEMP_LIRUN TEMP_LIRUN, ETL_DEV.MAP_KMDZ_TABLE MAP_KMDZ_TABLE, ETL_DEV.MAP_MONTH MAP_MONTH, ETL_DEV.MAP_YEAR MAP_YEAR, ETL_DEV.MAP_COMPANYCODE MAP_COMPANYCODE, ETL_DEV.MAP_TRANSPORT MAP_TRANSPORT where      (1=1) And (TEMP_LIRUN.COSTELMNT=MAP_KMDZ_TABLE.SAP_ZZKM)
    AND (TEMP_LIRUN.FISCYEAR=MAP_YEAR.SAP_YEAR)
    AND (TEMP_LIRUN.FISCPER3=MAP_MONTH.SAP_MONTH)
    AND (TEMP_LIRUN.COMP_CODE=MAP_COMPANYCODE.SAP_COMPCODE)
    AND (TEMP_LIRUN.WWHC=MAP_TRANSPORT.SAP_WWHC) Group By MAP_KMDZ_TABLE.BUD_DYKM,
    MAP_MONTH.ESS_MONTH,
    MAP_YEAR.ESS_YEAR,
    TEMP_LIRUN.CURRENCY,
    MAP_COMPANYCODE.ESS_COMPCODE,
    substr(MAP_KMDZ_TABLE.BUD_BUSINESSOBJECT,1,80),
    MAP_TRANSPORT.ESS_TRANSPORT,
    substr(MAP_KMDZ_TABLE.BUD_BUSINESSACTIVITY,1,80),
    substr(MAP_KMDZ_TABLE.BUD_CHANNEL,1,80)
    I know ODI think sum.. over must append group by , however it's not! How to solve this problem.
    Thank All for your attention
    SOS!
    Ethan

    Hi Ethan,
    In my exeprnc I faced a similar kind of situation.
    Two work arounds.
    1. Write one procedure and execute the same using ODI procedure.
    2. Customize a Km and use that KM in your interface.
    I guess in your query Group by function is not needed. (if this is the case you can achive this by a smple customization step in KM)
    for example : your current KM will generate a query like this:-
    select x,y, sum(x) over (order by y) as sumx FROM TestTable group by x, y
    and you need a query like this
    select x,y, sum(x) over (order by y) as sumx FROM TestTable
    go to your KM (duplicate the KM which you are using and rename _withoutGroup )
    remove the group by function from select query
    (remove the API function <%=snpRef.getGrpBy()%> from insert into i$ table step)
    please let me know if you need more help on this
    regards,
    Rathish

  • New column in ODI 11g Target

    Hi All,
    I am trying to import source gl_balances table to target table w_gl_balances.
    In this target table I have created new column called BUDGET. Other columns are auto mapped to the target table.
    BUDGET column mapping expression is DECODE(GL_BALANCES.ACTUAL_FLAG,'B', GL_BALANCES.PERIOD_NET_DR-GL_BALANCES.PERIOD_NET_CR, 0)
    While running this interface I am getting error like ora-00904 "BUDGET": Invalid identifier.
    Kindly advice regarding this.
    Thanks in advance.

    Do you have FLOW Control enabled - CKM being used ?
    Then most likely, the E$ table that was created with earlier version of the target table still exists and doesnt contain the BUDGET column and hence you get the error of invalid identifier.
    Drop the E$ table and ODI will recreate that table with the updated definition.

Maybe you are looking for

  • Not able to print on Purchase order whatever we fill in item text

    not able to print on Purchase order whatever we fill in item text, from where can we link to get printed item text on purchase order

  • Video issues tx2500z

    I've been having some epic graphics issues with my tx2500z. I get a bunch of random colorful boxes that appear all over my screen and then my computer becomes unresponsive and needs to be shut down forcibly. Sometimes it blue screens as well. I have

  • Accessing the "outcome"  value used in the navigation case

    I would like to dynamically create a view based on the outcome value used in the navigation case. How can I reference the outcome value from a backing bean? For example assume that a page (mypage.faces) can be accessed via outcomeA and outcomeB. I wa

  • Servlet don't work properly

    I have did to run this servlet but thereis an odd thing. This servlet query a service to database server to perform login mechanism. But the output always LoginFailed.jsp whenever i typed the user and password. Anyone wants to help.Please.Thanks in a

  • Batch wise price

    Dear     we have a scenario batch pricing,in that we have requirement thatif price is not picked from the batch i should not allow to do invoice .Is it possible  to do the customisation please help regards Damodhar