千锤百炼方成刚,想要加薪必看此文章。(Kettle工具之Javascript脚本组件课后练习)

前言
大家好,我是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~

如果你问一个善于溜冰的人怎样获得成功时,他会告诉你:“跌倒了,爬起来”,这就是成功。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值