Kettle使用 js 文件生成节假日表文件 附带2019-2020节假日文件

js 文件 (todo 标注的需要修改)

//Script here
//todo : 初始化日期 需要进行修改
var initDate = "2019-01-01";

//使用SimpleDateFormat对字符串类型的日期进行转化
var dateFormat = java.text.SimpleDateFormat("yyyy-MM-dd");
//指定开始时间 从哪一天开始
var startDate = dateFormat.parse(initDate);
//创建日历对象
var calendar = java.util.Calendar.getInstance();
//设置开始时间
calendar.setTime(startDate);
//累加日期
calendar.add(java.util.Calendar.DAY_OF_MONTH, rowNumber);
//请求的url
var url = null;
//建立的http链接
var httpConn = null;
//输入流的缓冲
var sb = null;
//获取当前时间的字符串
var date_value = dateFormat.format(calendar.getTime());
//获取代理键 20190101
var surrogateKey = date_value.replace("-", "");
//获取一年中的第几天
var dayOfYear = calendar.get(java.util.Calendar.DAY_OF_YEAR) + "";
//获取当月中的第几天
var dayOfMonth = calendar.get(java.util.Calendar.DAY_OF_MONTH) + "";
//判断是否为月的第一天
var isFirstOfMonth = dayOfMonth == 1;
//判断是否为月的最后一天
var isLastOfMonth = calendar.get(java.util.Calendar.DAY_OF_MONTH) == calendar.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);

//获取月的第几个星期
var weekOfMonth = calendar.get(java.util.Calendar.WEEK_OF_MONTH) + "";

//获取月份
var month = calendar.get(java.util.Calendar.MONTH) + 1 + "";
//获取year
var year = calendar.get(java.util.Calendar.YEAR) + "";
//获取季度
var quarter = "";
if (month >= 1 && month < 4) {
    quarter = "1";
} else if (month < 7) {
    quarter = "2";
} else if (month < 10) {
    quarter = "3";
} else if (month <= 12) {
    quarter = "4";
}

for (var i = 0; i < 10; i++) {
    //创建一个stringBuffer用来保存json
    sb = java.lang.StringBuffer();
    //读取文件
    var ins = null;
    //todo: 修改为自己的url  创建url,修改为自己的key
    //注册路径 可试用5000次
    // https://www.tianapi.com/signup.html?source=1210847019
	//下面两个API 可能失效
    //http://wow.kamisamak.com/api.php?date=2020-05-04(不一定能适用)
    //http://timor.tech/api/holiday/info/2018-03-02
    var urlStr = "http://api.tianapi.com/txapi/jiejiari/index?key=Youkey&date=" + date_value;
    url = java.net.URL(urlStr);
    var str = null;
    try {
        //调用API
        ins = java.io.BufferedReader(java.io.InputStreamReader(url.openStream(), "UTF-8"));
        //一行一行进行读入
        while ((str = ins.readLine()) != null) {
            sb.append(str);
        }
        break;
    } catch (err) {

    } finally {
        if (ins != null) {
            ins.close(); //关闭流
        }
    }
}

var result = sb.toString();
var obj = JSON.parse(result);
var list = obj.newslist[0];
//获取周几
var week = list.weekday + "";
//是否为周一
var isMonday = week == 1;
//是否休息日
var is_dayoff = list.info == "双休日";
//是否是工作日
var is_work = list.info == "工作日";
//是否为节假日
var is_holiday = list.info == "节假日";
//日期类型
var date_type = "";
if (list.daycode == "0") {
    date_type = list.info
} else if (list.daycode == "1") {
    date_type = "节假日"
} else if (list.daycode == "2") {
    date_type = "双休日"
} else if (list.daycode == "3") {
    date_type = "调休日"
}
//季度名称
var quarter_name = "Q" + quarter;
//年份 - 名称季度
var year_quarter = year + "-Q" + quarter;
//年份 - 月份
var year_month = date_value.substring(0,7);

kettle 操作

在这里插入图片描述

1. 生成记录

在这里插入图片描述

2.增加序列

在这里插入图片描述

3. 使 js 文件中的变量名跟序列的变量名对应上,并修改url

在这里插入图片描述

4.测试脚本文件并预览

在这里插入图片描述

5.获取需要的字段

在这里插入图片描述

6.使用excel输出 指定输出路径

在这里插入图片描述

7. 使用excel输出 指定输出字段

在这里插入图片描述

8. 执行 excel 文件内容如下(用的是19年的数据)

在这里插入图片描述

最后

如果需要节假日表excel文件可以在评论区留言!!! 本人看到会及时回复!!!
提供链接如下:

https://download.csdn.net/download/hongchenshijie/12382251
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值