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
    var urlStr = "http://api.tianapi.com/txapi/jiejiari/index?key=1270660d00be313436831f88253918ac&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文件可以在評論區留言!!! 本人看到會及時回覆!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章