Pentaho 水壶将月份数值转换为月份名称

Posted

技术标签:

【中文标题】Pentaho 水壶将月份数值转换为月份名称【英文标题】:Pentaho kettle conveting month numeric value to month name 【发布时间】:2013-09-17 05:03:22 【问题描述】:

我遇到了与 olap 和水壶有关的问题。事情是我正在使用 pentaho DI(kettle)将数据从我的数据库导出到 olap 星模式(事实和维度)。现在,当谈到时间戳时,我可以使用水壶中的计算器从 aw 时间戳中检索月、年和日。现在我需要将月份数值转换为其对应的月份名称(如将 1 替换为 JAN 等)。如何用水壶实现这一点。请给我建议。

【问题讨论】:

【参考方案1】:

在 PDI/Kettle 中,我发现根据不同数据类型的另一个字段的值来设置一个字段的值很棘手。 javascriptFormula 步骤可以做到这一点,但在这种情况下,我想我会使用 Stream Lookup,因为您的查找值很少且固定。

使用Data Grid 步骤,其中月份编号为整数列(1、2、3 ...),月份名称为字符串列(JAN、FEB、MAR ...)。将此步骤用作Stream Lookup 中的“查找步骤”。然后只需将月份名称检索到您的数据流中。这应该很快,如果您使用的是典型的数据仓库卷,这很好。

【讨论】:

【参考方案2】:

正如 Brian 所说,您还可以使用 Modified JavaScript 步骤来执行转换。以下是您可以这样做的方法:

var month_names=new Array();
month_names[1]="Jan";
month_names[2]="Feb";
month_names[3]="Mar";
month_names[4]="Apr";
month_names[5]="May";
month_names[6]="Jun";
month_names[7]="Jul";
month_names[8]="Aug";
month_names[9]="Sep";
month_names[10]="Oct";
month_names[11]="Nov";
month_names[12]="Dec";
var month_short = month_names[month_num];

【讨论】:

以上是关于Pentaho 水壶将月份数值转换为月份名称的主要内容,如果未能解决你的问题,请参考以下文章

尝试将月份编号转换为日期集中的月份名称

将 bigint 转换为日期(月份名称)

由于缺少插件,Pentaho 水壶无法运行转换

月份名称到月份编号,反之亦然在python中

将月份从名称转换为数字

Pentaho 水壶:如何为转换/作业设置测试?