如何在 Talend 中进行动态日期范围迭代?
How to do dynamic date range iteration in Talend?
我将 MinLoginTime 和 MaxLoginTime 存储在 2 个全局地图变量中:
globalMap.put("MinLoginTime","2017-10-24") //ignore the datetime format, but it a date
globalMap.put("MaxLoginTime","2018-04-26")
我想按月进行迭代并获取记录。即在这里我们看到示例中有 7 个月:10,11,12,1,2,3,4
我想生成这些类型的日期:
FromDate ToDate
2017-10-01 2017-10-31
2017-11-01 2017-11-30
2017-12-01 2017-12-31
...
2018-04-01 2018-04-30
然后,需要遍历每一行并做一些事情(现在让我们使用 tLog)
有人可以帮忙了解一下这里可以使用哪些 Talend 组件来生成日期范围、将它们存储在何处以及如何迭代它们来做某事吗?
您可以使用 Talend 组件和一些 Java 代码的组合非常轻松地实现这一点。 Talend 有很多日期操作函数。
首先,将全局变量日期存储为 Date
类型。
globalMap.put("MinLoginTime", TalendDate.parseDate("yyyy-MM-dd", "2017-10-24"))
然后 tLoop_1
在您的最小日期和最大日期之间的所有月份循环。此代码获取两个日期之间的月数:
TalendDate.diffDate((Date)globalMap.get("MaxLoginTime"),(Date)globalMap.get("MinLoginTime"),"MM")
tJava_3
只是将当前迭代的日期存储在 CURRENT_DATE 全局变量中。它是最小日期和当前迭代值(从 0 到 N 个月)的总和。
globalMap.put("CURRENT_DATE", TalendDate.addDate((Date)globalMap.get("MinLoginTime"), (Integer)globalMap.get("tLoop_1_CURRENT_VALUE"), "MM"))
tFixedFlowInput_1 定义了 2 Date
列:FromDate
和 ToDate
以分别获取当前迭代月份的第一天和最后一天。
TalendDate.getFirstDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
TalendDate.getLastDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
检查 TalendDate class 所有日期操作方法的参考。
我将 MinLoginTime 和 MaxLoginTime 存储在 2 个全局地图变量中:
globalMap.put("MinLoginTime","2017-10-24") //ignore the datetime format, but it a date
globalMap.put("MaxLoginTime","2018-04-26")
我想按月进行迭代并获取记录。即在这里我们看到示例中有 7 个月:10,11,12,1,2,3,4
我想生成这些类型的日期:
FromDate ToDate
2017-10-01 2017-10-31
2017-11-01 2017-11-30
2017-12-01 2017-12-31
...
2018-04-01 2018-04-30
然后,需要遍历每一行并做一些事情(现在让我们使用 tLog)
有人可以帮忙了解一下这里可以使用哪些 Talend 组件来生成日期范围、将它们存储在何处以及如何迭代它们来做某事吗?
您可以使用 Talend 组件和一些 Java 代码的组合非常轻松地实现这一点。 Talend 有很多日期操作函数。
首先,将全局变量日期存储为 Date
类型。
globalMap.put("MinLoginTime", TalendDate.parseDate("yyyy-MM-dd", "2017-10-24"))
然后 tLoop_1
在您的最小日期和最大日期之间的所有月份循环。此代码获取两个日期之间的月数:
TalendDate.diffDate((Date)globalMap.get("MaxLoginTime"),(Date)globalMap.get("MinLoginTime"),"MM")
tJava_3
只是将当前迭代的日期存储在 CURRENT_DATE 全局变量中。它是最小日期和当前迭代值(从 0 到 N 个月)的总和。
globalMap.put("CURRENT_DATE", TalendDate.addDate((Date)globalMap.get("MinLoginTime"), (Integer)globalMap.get("tLoop_1_CURRENT_VALUE"), "MM"))
tFixedFlowInput_1 定义了 2 Date
列:FromDate
和 ToDate
以分别获取当前迭代月份的第一天和最后一天。
TalendDate.getFirstDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
TalendDate.getLastDayOfMonth((Date)globalMap.get("CURRENT_DATE"))
检查 TalendDate class 所有日期操作方法的参考。