如何在Clover ETL中使用重新格式化组件更改参数的值

时间:2013-12-26 11:52:56

标签: java etl cloveretl

我试图找到一个方法,如何更改我已定义的参数的值,以及如何使用Clover ETL中的REFORMAT组件动态创建新参数。

我在我的转换方法中编写了一个小逻辑,重新格式化组件提供了:

        function integer transform() {
            string myparam1 = getParamValue("MY_PARAM1");
            string changeParam = getParamValue("CHANGE_PARAM_VALUE");

            if(changeParam =="true"){
                myparam1 = myparam1 +"_changed";
            }
       // update the value of parameter MY_PARAM1     
       // updateParameter("MY_PARAM1", myparam1 );  

       // create a new parameter
       // createNewParameter("MY_NEW_PARAM", "some_sample_data"); 

            return OK;
        }

来自三叶草设计师我试图检查可用的方法,但我没有找到任何相关的方法来帮助我提供我正在寻找的功能。

我是Clover ETL的新手,所以我在如何实现这一目标方面遇到困难,如果我们能够使用REFORMAT组件实现这一目标,还是需要使用其他组件,请帮助我吗?

2 个答案:

答案 0 :(得分:2)

你不能改变价值(以简单的方式,可能有一种方法可以直接访问java和图形模型,但这可能不是你需要的)CloveETL中的参数,因为它们以静态方式使用,所有出现在编译图形期间解析参数并用结果值替换。

如果您需要动态变量,请查看词典http://doc.cloveretl.com/documentation/UserGuide/topic/com.cloveretl.gui.docs/docs/using-dictionary.html?resultof=%22%64%69%63%74%69%6f%6e%61%72%79%22%20

但是你需要想一想,那个字典并不是参数的替代品。参数的静态使用有一些点,使用的地方,你不能用字典替换。

BTW为什么你需要在图表运行期间更改参数值?请解释用例,也许我可以给你一些指示...

答案 1 :(得分:1)

您无法更改图形参数的值,因为它们是在图形初始化阶段设置的。 但是,有两种方法可以实现您可能想要的目标:

  • 选择1:按计划运行图形,然后从计划程序传递参数值。

  • 选择2:需要将参数的修改后的值放在子图中并创建具有相同名称的子图参数的任何组件,然后将修改后的值作为输入映射的一部分从主图到子图。