前言
大家好,我是DJ丶小哪吒,我又来跟你们分享知识了。小编对软件开发有着浓厚的兴趣。喜欢与人分享知识。做博客的目的就是为了能与 他 人知识共享。由于水平有限。博客中难免会有一些错误。如有 纰 漏之处,欢迎大家在留言区指正。小编也会及时改正。
DJ丶小哪吒又来与各位分享知识了。今天小编要分享的是kettle的课后练习。本篇文章不仅可以用来给小编当笔记。还可以对初学kettle的人用来做课外扩展。一举两得,何不快哉。废话不多说,任何语言的交流都会影响小编的操作。下面我们进入正题,兄弟萌,安全带系好,我们发车啦!!!
文章目录
Kettle工具之Javascript脚本组件课后练习
1、需求:
生成日期维度数据日期,年,月,日,从2000年01月01日开始有365条记录,日期依次递增。并需要对日期进行处理,有以下一些需求。保存到Excel
2、起锅烧油(捋思路)
-实现步骤:(3步曲,先有个大概的思路,做任何事先捋清楚思路,能让你万事都事半功倍)
1、设计转换结构图
2、编写Java代码,生成日期
- 输入变量
- 处理逻辑
- 打印输出变量
这里java代码略过,哈哈,因为小编写的java代码补全,为防止各位车友走错路口,故省略….
但是还是建议先用java代码测试,然后再来修改成javaScript,这样比较方便,还能提高开发速度
3、处理Java代码,使用完全限定类名
3、开始下锅(思路捋清,开始做题。)
3.1、准备如下组件:
3.2、配置生成记录组件
3.3、配置增加序列组件
3.4、配置javaScript组件
代码如下:
//Script here
//代理键
var key ="20000101";
//转换时间格式
var dateFormat = new java.text.SimpleDateFormat("yyyyMMdd");
var parse = dateFormat.parse(key);
var df2 = new java.text.SimpleDateFormat("yyyy-MM-dd");
//年月日
var value = df2.format(parse);
//实例化一个日历类
var instance = java.util.Calendar.getInstance();
//设置时间
instance.setTime(df2.parse(value));
instance.add(java.util.Calendar.DAY_OF_MONTH,rowValue);
//获得到当前的时间
var date_key = dateFormat.format(instance.getTime());
//转换代理键 2000-01-01
var date_value = df2.format(dateFormat.parse(date_key));
//当年的第几天
var day_in_year = instance.get(java.util.Calendar.DAY_OF_YEAR);
//当月的第几天
var day_in_month = instance.get(java.util.Calendar.DAY_OF_MONTH);
//判断当前是否为当月第一天
var is_first_day_of_month;
if(day_in_month == 1){
is_first_day_of_month = "y";
} else {
is_first_day_of_month = "n";
}
var is_last_day_of_month;
//判断当前日期是否为当月最后一天 //.getActualMaximum(java.util.Calendar.DAY_OF_MONTH) 每个月的最大数量的一天
if(instance.get(java.util.Calendar.DAY_OF_MONTH)== instance.getActualMaximum(java.util.Calendar.DAY_OF_MONTH)){
is_last_day_of_month="y"
}else{
is_last_day_of_month="n"
}
//星期几
var weekday = instance.get(java.util.Calendar.DAY_OF_WEEK);
//一个月的第几个星期
var week_in_month = instance.get(java.util.Calendar.WEEK_OF_MONTH);
//获取一周的星期一
var firstDayOfWeek = instance.getFirstDayOfWeek();
// 判断是否是周一
var is_first_day_in_week;
if (firstDayOfWeek==weekday) {
is_first_day_in_week="y";
}else {
is_first_day_in_week="n";
}
//是否是休息日
var is_dayoff;
if (weekday ==6 || weekday==7){
is_dayoff="y"
}else{
is_dayoff="n"
}
//是否是工作日
var is_workday;
if(weekday==6 || weekday== 7){
is_workday = "n";
}else{
is_workday = "y";
}
需要用到的字段
最后先测试一下,不报错就是正常。最后点击确定。
3.5.配置excel输出组件
3.6、运行
4、上菜,一道美味佳肴就这样简简单单做好了(结果)
好了,以上内容就到这里了。看完本篇文章之后,是不是觉得此题也不过尔尔,内心是不是还想来几题呢。你学到了吗。 欢迎路过的朋友关注小编哦。各位朋友关注点赞是小编坚持下去的动力。小编会继续为大家分享更多的知识哦~~~。
我是DJ丶小哪吒。是一名互联网行业的工具人,小编的座右铭:“我不生产代码,我只做代码的搬运工”…哈哈哈,我们下期见哦,Bye~
如果你问一个善于溜冰的人怎样获得成功时,他会告诉你:“跌倒了,爬起来”,这就是成功。 |