kettle时间维度_学习笔记系列----1、kettle之js实现日期维度

本文是学习《Pentaho Kettle解决方案》中构建时间维度的过程记录,重点介绍了如何使用Kettle和JavaScript生成日期数据。通过设置初始日期、语言和国家代码,利用js表达式创建不同日期格式,并生成时间维度表。
摘要由CSDN通过智能技术生成

最近在《Pentaho Kettle解决方案:使用PDI构建开源ETL解决方案》一书中看到了构建时间维度的kettle过程,进行一下学习记录。对kettle有兴趣的可以去看一下这本书,很不错的一本书。

整体

eeeec296b6d4

分解

Generate 1 years

eeeec296b6d4

生成一年的数据行

生成一年的数据行(365条),并生成几个常量。

initial_date设置初始日期是 2017-01-01

language_code 语言代码设置成en

country_code地区代码设置成gb

Day Sequence

eeeec296b6d4

生成自增序列

生成增增的序列数字,用以后面和initial_date相加生成一系列连续的日期数据。

预览该步骤的效果如下:

eeeec296b6d4

Day Sequence预览

Calculate Dimension Attributes

eeeec296b6d4

生成时间维度

在这个步骤中,步骤Day Sequence作为输入流,其字段被设置为js变量,用来计算不同的日期。

步骤中,首先将序列号和initial_date相加,生成日历对象,然后,通过js表达式将其转换成不同的日期和日期的各个部分。同时。还适用js表达式生成智能主键,用于区别dim_date中的数据。

js表达式使用了语言和国家地区代码(在步骤Generate 1 years中设置)来完成对日期做本地化设置。例如,国家代码是CN且语言代码是zh,日期为2017-01-01被格式化为2017年1月1日 星期日。国家代码是gb且语言代码是en,日期2017-01-01将被格式化为Sunday, 1 January 2017。

具体代码如下:

//Create a Locale according to the specified language code

var locale = new java.util.Locale(

language_code.getString()

, country_code.getString()

);

//Create a calendar, use the specified initial date

var calendar = new java.util.GregorianCalendar(locale);

ca

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值