【问题标题】:Declare Date Type Global Variable and pass that to Child Job from Parent Job声明日期类型全局变量并将其从父作业传递给子作业
【发布时间】:2018-03-19 17:13:27
【问题描述】:

我想创建一个Date 类型的全局变量,我想将它传递给子作业。我可以将StringInteger 类型传递给孩子一号。但是使用Date 类型时运气不好,如下图所示:

以下是我在 tjavarow 中编写的代码。在子作业上下文中,变量传递此全局变量的值。现在,我在子工作toracleInput 中使用这些。我必须使用两个 Date 类型的上下文,其中全局变量 Value 将来自父作业。

这是我的代码:

String fromdate_file_epsilon=input_row.START_DATE1; 
globalMap.put("fromdate_file_epsilon", fromdate_file_epsilon);
String todate_file_epsilon = input_row.END_DATE1; 
globalMap.put("todate_file_epsilon",todate_file_epsilon); 
Date fromdate_epsilon = input_row.START_DATE;
globalMap.put("fromdate_epsilon", fromdate_epsilon); 
Date todate_epsilon = input_row.END_DATE; 
globalMap.put("todate_epsilon", todate_epsilon); 
Integer load_key_epsilon = input_row.LOAD_KEY;
globalMap.put("load_key_epsilon", load_key_epsilon);
System.out.println(fromdate_epsilon);

我将父作业的全局变量值传递给子作业的上下文值,例如 ChildJob 组件上的 Brand=((String)globalMap.get("brand_epsilon")

【问题讨论】:

  • 我在 tjavarow 中使用这个代码
  • 为什么不将上下文变量定义为日期类型,然后将所需的值分配给它们(context.myDate = row.myDate)。在 tRunJob 中,选中“传输整个上下文”选项以传递所有上下文变量。在您的子作业中,只需引用已经是日期类型的 context.myDate,无需强制转换。
  • 我在问题中加入了你的两个 cmets。

标签: talend


【解决方案1】:

正如我在 Talend 社区论坛上提出的,我强烈建议您将日期上下文变量保留为字符串,并使用 to_date 函数将值作为 Oracle 数据类型转换为如下所示的 where 子句:

... AND TRUNC(ACTIVITY_DATE) >= TO_DATE('" + context.FROMDATE + "', 'yyyy_mm-dd')" ...

此处以日期格式为例。

TRF

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 2015-01-14
    • 2021-05-29
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2021-01-21
    相关资源
    最近更新 更多