【发布时间】:2026-02-13 07:00:01
【问题描述】:
如果有人能快速回答这个问题,我将永远感激不尽。
我正在尝试筛选 CSV 文件中的所有数据,仅筛选日期早于 6 个月前的行。到目前为止,为了实现这一点,我已经使用 Pentaho 中的以下步骤创建了一个名为“sixMoDate”的变量。目标是在 Filter Rows 步骤中使用此变量。
- 获取系统信息:名称-今天;类型- 今天 00:00:00
- 计算器:使用值 -6 的新字段常量“减 6”、上一步的“今天”和“日期 A + B 月”的计算步骤来计算变量 SixMoDate =“今天”+“减 6”。 SixMoDate 的值类型是 Date
- 选择值:更改 SixMoDate 的元数据以确保值类型为日期。我知道这不应该是必需的,但正如您将在下面看到的那样,这个变量似乎被视为字符串而不是日期,所以我把它放进去看看它是否能解决这个问题 - 它没有。
- 设置变量
以上所有操作都正确运行,即使写入日志也会显示以正确日期格式写入的变量。但是,当我尝试在链接转换中“获取变量”(稍后在过滤行步骤中使用)时,我得到以下错误日志(其中“类型”设置为“日期”。它仅在没有错误的情况下运行“类型”设置为“字符串”,但是当我将字符串与过滤条件中的日期进行比较时,我在过滤行步骤中遇到相同的错误。
2021/06/17 12:20:59 - Get variables.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Unexpected error
2021/06/17 12:20:59 - Get variables.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : org.pentaho.di.core.exception.KettleValueException:
2021/06/17 12:20:59 - Get variables.0 - SixMonthDate String(13) : couldn't convert string [$(SixMonthDate)] to a date using format [yyyy/MM/dd HH:mm:ss.SSS] on offset location 0
2021/06/17 12:20:59 - Get variables.0 - $(SixMonthDate)
2021/06/17 12:20:59 - Get variables.0 -
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertStringToDate(ValueMetaBase.java:943)
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.core.row.value.ValueMetaBase.getDate(ValueMetaBase.java:2306)
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertData(ValueMetaBase.java:3862)
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.trans.steps.getvariable.GetVariable.processRow(GetVariable.java:109)
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2021/06/17 12:20:59 - Get variables.0 - at java.lang.Thread.run(Thread.java:748)
2021/06/17 12:20:59 - Get variables.0 - Caused by: java.text.ParseException: $(6MonthDate)
2021/06/17 12:20:59 - Get variables.0 - at org.pentaho.di.core.row.value.ValueMetaBase.convertStringToDate(ValueMetaBase.java:934)
2021/06/17 12:20:59 - Get variables.0 - ... 5 more
我尝试过:更改日期格式、转换掩码、日期区域设置、时区;将变量作为字符串获取,然后在选择值步骤中使用元数据转换为日期(我得到相同的“无法将字符串 [$(6MonthDate)] 转换为使用格式 [yyyy/MM/dd HH:mm :ss.SSS]" 错误)。
我浏览了有关基于环境变量进行过滤、设置/获取变量、将字符串转换为日期等的每个论坛帖子。我觉得解决方案必须是使用带有 str2date() 的修改后的 Javascript 值步骤的形式但由于某种原因,我无法让它工作(我对 Javascript 有点陌生)。我在 Javascript 步骤 var output = str2date(SixMonthDate, "MM/dd/yyyy") 中尝试了这段代码,得到了以下错误:
2021/06/17 12:43:06 - Modified JavaScript value.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : Unexpected error
2021/06/17 12:43:06 - Modified JavaScript value.0 - ERROR (version 9.1.0.0-324, build 9.1.0.0-324 from 2020-09-07 05.09.05 by buildguy) : org.pentaho.di.core.exception.KettleValueException:
2021/06/17 12:43:06 - Modified JavaScript value.0 - Javascript error:
2021/06/17 12:43:06 - Modified JavaScript value.0 - Could not apply the given format MM/dd/yyyy on the string for Thu Dec 17 00:00:00 MST 2020 : Format.parseObject(String) failed (script#2)
2021/06/17 12:43:06 - Modified JavaScript value.0 -
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod.addValues(ScriptValuesMod.java:476)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod.processRow(ScriptValuesMod.java:548)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at java.lang.Thread.run(Thread.java:748)
2021/06/17 12:43:06 - Modified JavaScript value.0 - Caused by: org.mozilla.javascript.EvaluatorException: Could not apply the given format MM/dd/yyyy on the string for Thu Dec 17 00:00:00 MST 2020 : Format.parseObject(String) failed (script#2)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.Context.reportRuntimeError(Context.java:945)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.Context.reportRuntimeError(Context.java:1001)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesAddedFunctions.str2date(ScriptValuesAddedFunctions.java:1049)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at java.lang.reflect.Method.invoke(Method.java:498)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:413)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.gen.script_5._c_script_0(script:2)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.gen.script_5.call(script)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.gen.script_5.call(script)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.mozilla.javascript.gen.script_5.exec(script)
2021/06/17 12:43:06 - Modified JavaScript value.0 - at org.pentaho.di.trans.steps.scriptvalues_mod.ScriptValuesMod.addValues(ScriptValuesMod.java:388)
2021/06/17 12:43:06 - Modified JavaScript value.0 - ... 3 more
注意:我已尝试确保指定的日期格式与此线程建议的源“字符串”使用的一致,但无济于事:How to convert string to date type in the Pentaho?
请帮忙!!!
【问题讨论】:
标签: javascript date etl pentaho pdi