Using ODI Variable in Topology

Since my source databases are many in number I am trying to use ODI Variable in topology to access the Source Databases details from a Table.
Please can anyone help me here....

Have a read here for details on using variables in topology.
Ok?
Cheers
John
http://john-goodwin.blogspot.com/

Similar Messages

  • Dymanin File Name Creating Using ODI variable

    Hi All,
    I am trying to create a flat file dynamically using ODI variables. I am following a document in metalink (Using A Dynamically Specified File Name Or Directory Name With ODI [ID 423635.1]). However, I am getting the following error, whenever I try to execute the interface:
    java.lang.NullPointerException
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execCollOrders(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlI.treatTaskTrt(SnpSessTaskSqlI.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.h.y(h.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    IKM: IKM SQL to File append
    I am sure that it is unable to locate the file. May be the variable value is not passed, not sure. But, if I mention a name like abc.txt, it works. It creates a new file with abc.txt. However, when I try to use a variable, it throws null pointer exception.
    Thank you
    KK

    Hi Nitesh,
    I am really not sure what exactly you mean by declare a variable in a script. I create a new variable and used it as a name for the flat flie model. I defined a SQL that contactenates sysdate with a string. Thank you for your help!
    Regards,
    KK

  • How to use ODI Variables in Jython

    Hi, im doing a dynamic interfaz .. so i make a connection to bd.
    When i try to do it .. i got an error...
    How can i access to the odi variables from odi..
    this is my code ..
    <%
    import java.sql.*;
    import java.io.*;
    BufferedWriter bw = new BufferedWriter(new FileWriter("c:\log.txt"));
    StringBuilder strB = new StringBuilder();
    Class.forName("oracle.jdbc.driver.OracleDriver");
    String ip = "#PROJECT.IP";
    String url = "jdbc:oracle:thin:@"+ip+":1521:orcl";
    Connection con = DriverManager.getConnection(url,"snpw","admin");
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
         bw.write(" raise(' ");
         out.print(" raise(' ");
    String str = "SELECT c.var_name,d.project_name FROM snp_package a JOIN snp_step b On (a.i_package = b.i_package) JOIN snp_var c ON (b.i_var = c.i_var) JOIN snp_project d ON (c.i_project = d.i_project) WHERE UPPER(pack_name) = upper('DebugJava')";
    ResultSet rs = stmt.executeQuery(str);
    while(rs.next()){
    String var_name = rs.getString("var_name");
    String project_name = rs.getString("project_name");
    out.print(var_name+" #" project_name"."+var_name+"\n ");
    bw.write("#STUFF."+var_name);
    bw.write("')");
    out.print("')");
    rs.close();
    bw.close();
    stmt.close();
    con.close();
    %>
    this is the error ...:
    The application script threw an exception: java.sql.SQLException: Excepción de E/S: The Network Adapter could not establish the connection BSF info: DebugVariables at line: 0 column: columnNo
    Iknow tha is taking "#PROJECT.IP" like my ip .. but there is a variable that is on my package with a assiged value 127.0.0.1
    but jython is not taking it !!
    I make a raise to the variable .. and yes the variable take de value "127.0.0.1" but not in my jython code
    note: My variable is linked with OK to the jython procedure on my package
    Can i acces to the variable? from jython how?.
    Thanks in advanced!!
    Edited by: user11334562 on 28-abr-2010 15:12

    1. This is not a jython code, this is beanshell code. Anything you put between <% and %> is beanshell code which is sort of a parser code for ODI. Check out
    http://www.beanshell.org/
    2. Your expression for "url" variable is wrong. If you want to concatenate strings, you have to use + sign i.e it should be:
    String url = "jdbc:oracle:thin:@"+ip+":1521:orcl";
    Other statments need to be adjusted similar way.
    3. Why would you want to go through so many trouble? Just extract the SQL into a file using ODI SQLUnload tool. The sql should be:
    SELECT c.var_name||' #'||d.project_name||'.'||c.var_name FROM snp_package a JOIN snp_step b On (a.i_package = b.i_package) JOIN snp_var c ON (b.i_var = c.i_var) JOIN snp_project d ON (c.i_project = d.i_project) WHERE UPPER(pack_name) = upper('DebugJava')
    4. How does printing a set of variables from a particular package help you to write dynamic interface?

  • How to use odi variable in java code.

    Hi,
    I am trying to calculate check sum of a file and need to capture that in a odi variable...
    I wrote code like this(selected technology as java bean shell)
    <@
    import java.io.*;
    import java.util.zip.*;
    public class checksum {
    public static void main(String[] args) throws Exception {
    FileInputStream fis = new FileInputStream(new File("c:/dummy.txt"));
    CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
    BufferedInputStream in = new BufferedInputStream(cis);
    while (in.read() != -1) {
    #checksum = cis.getChecksum().getValue();
    }@>
    But I am not able to get that value...
    I tried in another way like this
    <@
    import java.io.*;
    import java.util.zip.*;
    public class checksum {
    public static void main(String[] args) throws Exception {
         long result;
    FileInputStream fis = new FileInputStream(new File("c:/dummy.txt"));
    CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
    BufferedInputStream in = new BufferedInputStream(cis);
    while (in.read() != -1) {
    result= cis.getChecksum().getValue();
    @>
    In odi variable refreshing mode i selected schema as memory_engine and wrote
    select '<@=result@>' from dual;
    even this wont work for me :(
    Anyone pls help me in this...
    Thanks in advance
    Pavan

    Hi Phani,
    Thanks for the reply. I resolved this. The mistake is I wrote java code in a class,in main function. I removed class and main function. Now I am able to capture value into Odi variable...
    I modified code as
    <@
    import java.io.*;
    import java.util.zip.*;
         long result;
    FileInputStream fis = new FileInputStream(new File("C:/dummy.txt"));
    CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
    BufferedInputStream in = new BufferedInputStream(cis);
    while (in.read() != -1) {
    result=cis.getChecksum().getValue();
    @>
    finally retrieving result value from dual
    select '<@=result@> from dual
    Edited by: 908443 on Jan 16, 2012 10:42 PM

  • Using ODI variable in Header File

    Hi,
    I want to append header/footer file to the main data file.
    Is it possible to do this:
    1) I want to write to the header file - table name, rowcount, .. and various other detials. But i do not want to use an interface/odioutfile/odisqlunload for this.
    2) I want to use ODIvariables and write the varaible value to Header.txt file.
    Is such a thing possible?
    If NO, then what could be the other soultion?
    Thanks.

    Thanks Dev.
    I followed the following steps
    1. Refresh the variable for header (OK)
    2. Call the Variable using OdiOutFile [ Header is populated ] (OK)
    3. Call the Interface SQL to File Append [ In the option have the Header as no since you are getting the Header from the Variable ] (OK )
    When I see my output file its coming as this
    2stt_acct:1234 (2 is the row count - supposed to be a separate line)
    stt_acct:5678
    I wanted the file to be the following
    2 (header representing row counts)
    stt_acct:1234
    stt_acct:5678
    How can I make this happen

  • Can we assign jython variable value into ODI variable?

    Hi Team,
    We are trying to save jython variable value into ODI variable so that ODI variable can use in later steps.
    we are facing failure regards same.
    Please suggest us so that we can use ODI variable value in later steps.
    Thanks
    Ankush.

    See if this post help you :- How to assign value for a ODI variable from Jython Script
    Doc id 424579.1 on metalink should help.

  • Assign value to ODI variable from Jython

    Hello Experts,
    I have a procedure where I'm using Jython code. I want to assign a value to an ODI project variable from a Jython function:
    Example:
    #COUNTER = len(v_jythonList) ---> being #COUNTER the ODI project variable and len() the jython function
    Now, i noticed that using ODI variables adds # sign which is use for comments in Jython code. Is there a way to assign values to ODI variables from Jython script?
    Please help!.
    Thanks.
    Pablo.

    Hi,
    Does this post help you :- How to assign value for a ODI variable from Jython Script
    Doc id 424579.1 on metalink should help.
    Cheers
    John
    http://john-goodwin.blogspot.com/

  • Reg ODI variables

    Hi ,
    Can anyone tell me , how to use odi variables in odi procedures and functions .
    Thanks
    Bhoopendra

    Hi Bhoopendra,
    Check the below link,
    http://download.oracle.com/docs/cd/E14571_01/integrate.1111/e12643/procedures.htm#CHDCJHJF
    Thanks,
    Guru

  • Using variables in Topology

    Hi All,
    In ODI do we use variables in topology as well?
    If so , 1) for which scenarios we use it 2) how we can implement that?
    Please explain with examples.
    Thanks,
    Pankaj Kabdal

    Lets take a fictitious scenario where more than 6 environments are there. Your codes needs to be passed trough all of them and the user for the same table in each env is different. Also after deploying your code in prod there are chances that the user might change for the target table but not the password. In that scenario the Admin guy needs to manually update the data server every time user get changed.
    Instead logging into ODI you can configure a table which will store the username. So what you can do is to read this table to fetch the username and substitute it in dataserver via odi variable.
    select username from user_config where context='<%=odiRef.getContext( "CTX_Name" )%>'
    Thats it

  • Problem: Use an ODI variable in a Java Procedure

    Hi and thanks in advance,
    i need to use a project variable in a java procedure i've written. In particular i should read a file (and manage it...), but its name is stored in avariable called #fileName that i refresh each time.
    writing something like:
    <% FileInputStream fis = new FileInputStream(C:\\"+"#filename");
    etc.
    etc.
    %>
    doesn't work...
    How can i use the value of my ODI variable inside the Java code?
    Please, help me if you can...
    Thank you very much.

    Any Idea? Please, this question is blocking me...

  • How to use an ODI variable in an IKM?

    Hi,
    I am trying use the value of ODI variable in IKM SQL Incremental Update. The variable contains the count of error records. My problem is how to use the variable in the IKM. I am trying to use the variable in an If condition like:
    <%if(%>#COuntReprocessRec<%>0){%>
    I have declared the variable as Numeric.
    Thanks.

    Hi,
    For the below requirement follow the below steps.
    I have to execute the 'Insert of flow into I$ table' step of IKM, only if Error records are present in my source table. The IKM i am using is IKM SQL Incremental Update.
    Create a new step before 'Insert of flow into I$ table' step, i say "Check Error Record".
    Command on source
    Technology : <your source technology>
    Schema: Whichever schema points to ur source error table
    Command:
    select count(*) as row_count from <table_name>
    Command on Target
    Technology : Jython
    Command:
    CountData=#row_count
    if CountData>0:
    ##raise ' \n\nThere are error records in source error table'
    Thats it.
    This will stop the flow in case of error records persist in ur source table, else it allow the flow to next Insert I$ step.
    P.S: Replace ## with TAB.
    Thanks,
    Guru

  • Is it possible to use a ODI variable in a procedure

    I am trying to call an external java program from the operating system (MS-DOS) using a procedure. This is possible using the os.system("<command>") syntax - declaring a procedure to use Jython. However, I want to be able to pass two ODI variables to the java program. I do not seem able to do this, is it possible ?
    I also tried calling the OS command from within a package - but again cannot get the OS command to pass the variables.
    I would appreciate any help on this.

    Thanks for your response.
    I am still unable to do this.
    Problem is the procedure is "Jython" and it does not know what the ODI variables are.
    I basically have two variables source and target which need to be passed to a java procedure.
    So I created two VARIABLES in ODI - source and target.
    I then have a procedure with the command;
    import os
    import sys
    cmd = "java ConvFile"
    rc = os.system(cmd)
    when this runs it does not pass the variables.
    if you have
    import os
    import sys
    cmd = "java ConvFile"+#Tax_Updates.SourceFile+#Tax_Updates.TargetFile
    rc = os.system(cmd)
    then it does not know what #Tax_Updates.SourceFile and #Tax_Updates.TargetFile are and so just passes them as strings.
    If you still think it is possible or anyone esle knows can you elaborate a little on the solution.
    Thanks
    Nick

  • How to use ODI procedures into a ODI variable

    Hi,
    I have the below condition
    select c1 from table where c1>#ODIVAR1 and use the output of this query in a variable to define the package flow
    If output=0 package flow goes as XXX
    else
    flow goes as YYY.
    So please suggest how to use a ODI variable to capture the procedures putput and use it in package flow in this case.
    Thanks,
    Naveen.

    Step1 . Refresh the variable in the package, which have this query select c1 from table where c1>#ODIVAR1
    Step2. Evaluate above variable (operator = , value 0 )
    Step 3. If true Package flow xxx , else false yyy
    Please close the thread once you get the required flow.

  • ODI Variable using Variables

    Does anyone know if it is possible to use a Variable inside of another variable??
    first variable is Current_Sysdate which the query is:
    Select sysdate
    from dual
    Second, I have a variable called Count_Rec: this is to count the records...
    The SQL that drives this is:
    Select count(r2.pn)
    from register r2, pol p2
    where p2.pdt =
    (select max(p3.pdt)
    from pol p3
    where p3.pn = p2.pn and
    p3.pdt = to_date('#Current_Sysdate', 'mm/dd/yyyy')) and
    r2.pn = p2.pn and
    r2.pdt = p2.pdt
    when i test this in ODI i get an error:
    Error while executing query
    ORA-01858: a non-numeric character was found where a numeric was expected.
    This is being caused by the "*** r3.pdt = to_date('#Current_Sysdate', 'mm/dd/yyyy')) and ***" line (I know this because if i remove this line it compiles completely)
    My question is ... is it possible to use a variable within another variable in ODI??? if so does anyone have an idea what i am doing wrong here???
    I realize i could just replace the #Current_Sysdate with sysdate but the idea is they may want to run this for a different date... it may not always be sysdate... so they wanted a variable in that spot...

    DUplicate post

  • Can ODI use environment variables?

    Running on Linux/Unix, can ODI use environment variables? For example, export LANGUAGE="en", and anyway in ODI can get variable LANGUAGE?

    It is easy.
    Use the following command at variable Refresh tab and let the Logical Schema to the file too...
    Just change the file path (c:/temp/cezar_test.txt)
    Select COLUMN_1 from TEST
    /*$$SNPS_START_KEYSNP$CRDWG_TABLESNP$CRTABLE_NAME=TESTSNP$CRLOAD_FILE=c:/temp/cezar_test.txtSNP$CRFILE_FORMAT=DSNP$CRFILE_SEP_FIELD=3BSNP$CRFILE_SEP_LINE=0D0ASNP$CRFILE_FIRST_ROW=0SNP$CRFILE_ENC_FIELD=SNP$CRFILE_DEC_SEP=SNP$CRSNP$CRDWG_COLSNP$CRCOL_NAME=COLUMN_1SNP$CRTYPE_NAME=STRINGSNP$CRORDER=1SNP$CRLENGTH=50SNP$CRPRECISION=50SNP$CR$$SNPS_END_KEY*/
    For this command the file must to have just just the value in one line.
    Does it help you?
    Edited by: Cezar Santos on 23/01/2009 16:14

Maybe you are looking for

  • Coloring messages in mailboxes with Rules.

    I am struggling to get all my mail rules to work again after some reorganizing. For instance, this is not working if I select already sorted mailboxes, and do "Apply Rules". Also on my IMAP-mailboxes on my @me.com account. Thankul also for manuals ti

  • WRT320N - How to close ports

    Certain ports I will hardly or ever use like: SMTP 25, telnet 23, SNMP 161, etc I want to make my network more secure by closing some ports, but how is this done? The manual says nothing about such feature. Thank you.

  • Premier elements 11

    I have recently bought premier elements 11. I open the icon, click on new project, it looks to try and open but it then close. I then get a message... We have detected an incompatible display driver. To get a better and faster performance, please upd

  • Safari wont open web pages using Vista

    After installing Safari on a windows vista PC I keep getting the same message Safari can't open the page. I am able to open web pages with internet explorer

  • Patch Successful on One system but not another?

    I am wondering if there is a Cache dump or process of getting a patch system to recover from a failure where the patch has deployed successfully on a different system. There are a variety of errors depending on the patch as well as device. I see some