You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pentaho PDI转换如何在Excel输出文件名中添加上周周数标识

PDI动态生成带上周周数标识Excel文件名的操作方法

你可以通过两种方案实现需求,操作步骤如下:

方案一:转换内生成字段传递(单转换场景首选,无需依赖作业)

  • 在Table input组件之前新增「用户自定义Java表达式」组件,新增一个字符串类型字段,命名为last_week_tag,写入对应逻辑代码生成YYYYWXX格式的上周标识:
    适配Java 8及以上版本的代码(PDI 8.0及以上版本默认支持):
    import java.time.LocalDate;
    import java.time.temporal.WeekFields;
    import java.util.Locale;
    
    // 取上周日期
    LocalDate lastWeek = LocalDate.now().minusWeeks(1);
    // 按国内周规则(周一为一周起始)配置,如需按其他地区规则修改Locale参数即可
    WeekFields weekFields = WeekFields.of(Locale.CHINA);
    int year = lastWeek.get(weekFields.weekBasedYear());
    int weekNum = lastWeek.get(weekFields.weekOfWeekBasedYear());
    return String.format("%dW%02d", year, weekNum);
    
    适配低版本PDI(不支持Java 8新时间API)的代码:
    import java.util.Calendar;
    import java.util.Locale;
    
    Calendar cal = Calendar.getInstance(Locale.CHINA);
    // 向前推1周
    cal.add(Calendar.WEEK_OF_YEAR, -1);
    int year = cal.get(Calendar.YEAR);
    // 兼容跨年周逻辑
    if (cal.get(Calendar.MONTH) == Calendar.JANUARY && cal.get(Calendar.WEEK_OF_YEAR) > 50) {
        year -= 1;
    } else if (cal.get(Calendar.MONTH) == Calendar.DECEMBER && cal.get(Calendar.WEEK_OF_YEAR) == 1) {
        year += 1;
    }
    int weekNum = cal.get(Calendar.WEEK_OF_YEAR);
    return String.format("%dW%02d", year, weekNum);
    
  • 调整Select values组件的字段配置,保留last_week_tag字段,不要将其筛除。
  • 打开Microsoft Excel writer组件配置页:
    1. 在文件名输入框中填写基础文件名格式,示例:业务周度数据_${last_week_tag}.xlsx
    2. 勾选「包含来自步骤的字段在文件名中」选项,在下拉字段列表中选择last_week_tag,勾选「在文件名里使用字段」
    3. 如不需要将周标识字段写入Excel内容,可在组件的「字段」配置页删除last_week_tag字段,不影响文件名引用

方案二:作业级定义变量(多转换复用周标识场景首选)

  • 若你使用作业调度该转换,可在作业中新增「设置变量」组件,用上述代码生成LAST_WEEK_TAG全局变量,作用域选择根作业级别。
  • 转换的Microsoft Excel writer组件直接引用变量${LAST_WEEK_TAG}到文件名即可,无需在转换内额外新增字段。

注意:如果需要调整周计算规则(比如周日为一周起始、自定义第一周判定标准),修改代码中Locale或者WeekFields的配置即可。

内容的提问来源于stack exchange,提问作者sbrbot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:57:04