如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数
Posted
技术标签:
【中文标题】如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数【英文标题】:How to Fetch All Parameters in 'User Defined Java Class' Step in Pentaho Data Integration (Kettle) 【发布时间】:2017-07-07 07:47:29 【问题描述】:场景: 我正在 PDI 中创建一个转换。这种转换有一个步骤“用户定义的 Java 类”,我在其中调用了一个外部库。 此转换具有“参数”,现在,我必须单独获取所有参数以在此步骤中使用它们(传递给我的外部 jar),如下所示:
PgSqlHost = getVariable("PostgresHost");
PgSqlPort = getVariable("PgSqlPort");
PgSqlLoginUserId = getVariable("PgSqlLoginUserId");
PgSqlLoginPassword = getVariable("PgSqlLoginPassword");
在这一步中我必须使用 50-60 个这样的参数。我必须像这样单独获取它们中的每一个并将其传递给外部 java lib。
TransformationParameters tparams= new TransformationParameters();
tparams.PgSqlHost = PgSqlHost;
tparams.PgSqlPort = Integer.parseInt(PgSqlPort);
tparams.PgSqlLoginUserId = PgSqlLoginUserId;
tparams.PgSqlLoginPassword = PgSqlLoginPassword;
Configuration config = ConfigurationReader.getConfiguration();
config.setParameters(tparams);
这种方法的问题是:
-
我必须单独获取所有参数。
添加新参数时,我必须在所有转换中处理修改此步骤
我的问题: 有没有办法像这样获取所有参数:
HashMap<K,V> params = getAllVariables();
Configuration config = ConfigurationReader.getConfiguration();
config.setParametersMap(tparams);
我尝试了什么:
我尝试在论坛中搜索 Pentaho Wiki 和此 thread, 但附近没有找到。
我可以添加一个步骤来将这些参数写入 .properties 文件并 阅读我外部 jar 中的内容。
有人可以提出更好的想法来实现这一目标吗? 谢谢。
【问题讨论】:
【参考方案1】:在 UserDefinedJavaClass 的进程行中使用这种方法
String[] variables = super.parent.listVariables();
【讨论】:
哇......我现在得到了所有参数/变量的映射,但这些只是我得到的参数名称。我需要获取所有参数及其值。 如果没有办法获取键值映射,我可以遍历这些键并获取它们的值以将这些条目放入映射中。以上是关于如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数的主要内容,如果未能解决你的问题,请参考以下文章