【发布时间】:2017-12-19 00:55:50
【问题描述】:
我在 Pentaho PDI 中有如下转换(注意 SQL 语句中的问号):
转换是从作业中调用的。我需要的是在作业运行时从用户那里获取值并将其传递给转换,以便替换问号。
我的问题是,有参数,有参数,有变量,不知道用哪一个。如何使这项工作?
【问题讨论】:
标签: pentaho pentaho-spoon pentaho-cde pentaho-data-integration
我在 Pentaho PDI 中有如下转换(注意 SQL 语句中的问号):
转换是从作业中调用的。我需要的是在作业运行时从用户那里获取值并将其传递给转换,以便替换问号。
我的问题是,有参数,有参数,有变量,不知道用哪一个。如何使这项工作?
【问题讨论】:
标签: pentaho pentaho-spoon pentaho-cde pentaho-data-integration
karan 的意思是你的 sql 应该看起来像 delete from REFERENCE_DATA where rtepdate = ${you_name_it},并选中 Variable substitution 框。 you_name_it 参数必须在转换选项中声明(单击勺子面板中的任意位置,选项/参数),有或没有默认值。
运行转换时,系统会提示您一个面板,您可以在其中设置参数值,包括you_name_it。
参数透明地从作业传递到转换,因此您可以将you_name_it 声明为作业的参数。然后当用户运行作业时,会提示给参数列表赋值,包括you_name_it。
实现相同结果的另一种方法是使用参数。问号将替换为Parameters list box 中指定的字段,顺序相同。当然,您使用的字段必须在上一步中定义。在您的情况下,Get variable 步骤读取调用作业中定义的变量,并将它们放在一行中。
请注意,有一个现成的Delete 步骤可以从数据库中删除记录。指定表名(可以是参数:Crtl+Space在框中)、表列和条件。条件将来自在 Get parameter 中定义的上一步,就像在参数方法中一样。
【讨论】:
您可以使用变量或参数。如果您使用的是变量,请使用
${variable1}
查询中的语法,如果你想使用参数,那么你必须使用?在您的查询中并在“用作参数的字段名称”部分中提及这些参数的名称。两者都会起作用。如果您需要进一步说明,请告诉我。
【讨论】: