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

Pentaho Data Integration如何在Filter Rows步骤使用自定义日期变量

解决方案

方案1(推荐,无需写脚本)

  • 第一步:调整生成sixMoDate变量的转换
    1. 完成Calculator步骤得到Date类型的sixMoDate后,添加Select Values步骤,切换到「元数据」标签
    2. 选择sixMoDate字段,将类型修改为String,格式指定为yyyy-MM-dd HH:mm:ss(可根据你的需求调整,只要固定统一即可)
    3. 再执行Set Variable步骤,此时变量存储的是标准格式的日期字符串
  • 第二步:调整业务转换的变量处理
    1. Get Variable步骤获取sixMoDate时,类型选择String,不要直接选Date
    2. 新增Select Values步骤,切换到「元数据」标签,选择sixMoDate字段,类型修改为Date,格式填入上一步指定的yyyy-MM-dd HH:mm:ss
    3. 后续Filter Rows步骤直接用Date类型的sixMoDate和CSV的日期字段比较即可

方案2(Modified JavaScript Value 脚本方案)

如果你要沿用当前直接存Date生成的变量格式,从错误日志可以看到你拿到的字符串格式是EEE MMM dd HH:mm:ss z yyyy(如Thu Dec 17 00:00:00 MST 2020),且星期、月份为英文缩写,需要指定对应格式和英文区域,脚本改为:

var output = str2date(SixMonthDate, "EEE MMM dd HH:mm:ss z yyyy", java.util.Locale.US);

设置output字段的类型为Date即可使用。

错误原因说明

  • Pentaho中的所有变量本质都是字符串类型,你将Date类型字段存入变量时,Pentaho会自动调用JDK默认的toString()方法将日期转为EEE MMM dd HH:mm:ss z yyyy格式的字符串,而非你预期的自定义格式
  • 你直接在Get Variable步骤选Date类型时,Pentaho默认用yyyy/MM/dd HH:mm:ss.SSS格式解析字符串,格式不匹配因此报错
  • 之前JS转换失败是因为你指定的MM/dd/yyyy格式和实际字符串格式完全不匹配,且没有指定英文区域无法解析英文的星期、月份缩写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 09:36:01