2

我试图找出一种方法来更改我已定义的参数的值,以及如何使用 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 组件实现这一点,或者我们是否需要使用不同的组件,请帮助我?

4

2 回答 2

2

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

如果您需要动态变量,请查看字典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

但是您需要考虑,该字典并不能完全替代参数。参数的静态用法有一些使用点和位置,您无法用字典代替。

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

于 2013-12-27T17:42:42.447 回答
1

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

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

  • 选项 2:无论组件需要参数的修改值,都将它们放在子图中,并创建一个具有相同名称的子图参数,并将修改后的值作为输入映射的一部分从主图传递到子图图形。

于 2019-10-16T12:33:30.240 回答