Forum Discussion

Christophe's avatar
Christophe
New Contributor II
5 years ago

How to make a generic pipeline Oracle => SQL Server

Hello,
I would like to build a generic pipeline to load data from an Oracle DB to a SQL Server DB.
I have more than 100 queries to load, so I would like to be able to call the pipeline with the Select (from Oracle) and the destination table as parameters.
I already did a pipeline which works well if I have only Varchar in the select.
If I put a timestamp in the select, I get the error “The conversion from UNKNOWN to UNKNOWN is unsupported.”
I there a way to do what I am tring to do ?
Thanks

7 Replies

  • tstack's avatar
    tstack
    Former Employee

    You should be able to reference the other library through the lib variable. Is that not working?

    For example, if you this as the library helper.expr:

    {
        chefify: x => x + ' bork! bork! bork!'
    }
    

    You should be able to reference it from another library, like so:

    {
        msg: () => lib.helper.chefify('Hello, World!')
    }
    

    Note that if the references are not in functions, but directly in the top-level expression, you’ll need to ensure the libraries are listed in the right order in the pipeline properties.

    • ayush_vipul's avatar
      ayush_vipul
      New Contributor III

      I found a better way to achieve what i was look for.

      But thanks for highlighting this.@tstack

    • ayush_vipul's avatar
      ayush_vipul
      New Contributor III

      I have a use case where a child pipeline has multiple expr files.

      I want to pass a value to the child pipeline using which my chiled pipeline would choose one of the expression library.
      is there a way to do it ?

      • tstack's avatar
        tstack
        Former Employee

        In the child pipeline properties, add a parameter that you’ll use to specify the library to load. Then, in the “Expression Libraries” section, add a path that uses the parameter you just created. You’ll probably also want to set the name of the imported library using the “As” column. In the screenshot below, the parameter is config and defaults to the library file dev.expr and the library can be referenced via lib.conf in expressions:

        In the parent pipeline, you’ll pass the config parameter with the library paths that you want. In the screenshot below, there are two documents entering the PipeExec with “dev.expr” and “prod.expr” as the paths. So, the child will execute first with the “dev” library and then with the “prod” library.

    • ayush_vipul's avatar
      ayush_vipul
      New Contributor III

      Is there a way to declare methods with global scope in expression library.
      Is nesting multiple libraries together a good preactice ?

      • tstack's avatar
        tstack
        Former Employee

        Do you mean without the lib.libname prefix? No, libraries are always imported under the lib object.

        I’m not sure what you mean by this, can you give an example?