如何在PDI中实现基于7天日期范围的日期变量循环?
PDI实现按日循环处理过去7天数据的方案
一、在「声明日期变量」转换中生成7天日期列表
你已经通过「获取系统信息」拿到了week_from和today变量,接下来按以下步骤生成每天的日期:
- 添加生成行步骤:设置生成行数为7(或用动态计算式
DATEDIFF('day', ${week_from}, ${today}) + 1适配不同天数),该步骤会自动生成ROW_NUMBER字段(从1开始递增)。 - 添加计算器步骤:新增日期字段(比如命名为
loop_date),用公式计算对应日期:
若需统一日期格式(匹配数据库),改用:DATEADD('day', -${ROW_NUMBER}+1, ${today})DATE_FORMAT(DATEADD('day', -${ROW_NUMBER}+1, ${today}), 'yyyy-MM-dd') - 添加复制记录到结果步骤:将生成的每日日期存入作业结果集,供后续循环调用。
二、作业层面实现逐日期循环执行
调整作业结构,实现对每个日期单独执行「temp1」转换:
- 在「声明日期变量」转换之后,添加循环每一行结果作业项,该步骤会读取前面生成的日期结果集,逐行触发循环。
- 在循环内部添加「temp1」转换:
- 先给「temp1」转换定义参数(比如
current_date),用于接收循环传入的日期。 - 在作业的「temp1」转换配置界面,将循环行中的
loop_date字段赋值给current_date参数。 - 修改「temp1」转换的输入SQL,将范围查询改为单日期查询:
and dtJornada = '${current_date}'
- 先给「temp1」转换定义参数(比如
内容的提问来源于stack exchange,提问作者Blinkclaw
相关产品推荐
相关产品推荐

