文章目录
- js 文件 (todo 标注的需要修改)
- kettle 操作
- 1. 生成记录
- 2.增加序列
- 3. 使 js 文件中的变量名跟序列的变量名对应上,并修改url
- 4.测试脚本文件并预览
- 5.获取需要的字段
- 6.使用excel输出 指定输出路径
- 7. 使用excel输出 指定输出字段
- 8. 执行 excel 文件内容如下(用的是19年的数据)
- 最后
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);