Pentaho数据集成(Kettle)中'User Defined Java Class'步如何获取所有参数
How to Fetch All Parameters in 'User Defined Java Class' Step in Pentaho Data Integration (Kettle)
场景:
我正在 PDI 中创建转换。此转换有一个步骤 'User Defined Java Class',我在其中调用外部库。
此转换具有“参数”,现在,我必须单独获取所有参数 以在这一步中使用它们(传递到我的外部罐子)像这样:
PgSqlHost = getVariable("PostgresHost");
PgSqlPort = getVariable("PgSqlPort");
PgSqlLoginUserId = getVariable("PgSqlLoginUserId");
PgSqlLoginPassword = getVariable("PgSqlLoginPassword");
我必须在这一步中使用 50-60 个这样的参数。我必须像这样单独获取它们中的每一个并将其传递给外部 java 库。
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);
我试过的:
我可以添加一个步骤将这些参数写入 .properties 文件,然后
阅读我外部 jar 中的内容。
有人可以提出更好的想法来实现这一目标吗?
谢谢。
在 UserDefinedJavaClass 的进程行中使用这样的方法
String[] variables = super.parent.listVariables();
场景:
我正在 PDI 中创建转换。此转换有一个步骤 'User Defined Java Class',我在其中调用外部库。
此转换具有“参数”,现在,我必须单独获取所有参数 以在这一步中使用它们(传递到我的外部罐子)像这样:
PgSqlHost = getVariable("PostgresHost");
PgSqlPort = getVariable("PgSqlPort");
PgSqlLoginUserId = getVariable("PgSqlLoginUserId");
PgSqlLoginPassword = getVariable("PgSqlLoginPassword");
我必须在这一步中使用 50-60 个这样的参数。我必须像这样单独获取它们中的每一个并将其传递给外部 java 库。
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);
我试过的:
我可以添加一个步骤将这些参数写入 .properties 文件,然后 阅读我外部 jar 中的内容。
有人可以提出更好的想法来实现这一目标吗? 谢谢。
在 UserDefinedJavaClass 的进程行中使用这样的方法
String[] variables = super.parent.listVariables();