千亿数仓2_使用Kettle生成日期维度数据

本文介绍了如何使用Kettle工具生成2019年一年的日期维度数据,以便进行销售订单的周、月环比和同比分析。涉及到的步骤包括使用Javascript编写脚本来生成日期,通过HTTP客户端获取国家法定节假日信息,然后利用Switch/Case组件处理不同类型的日期,并最终将数据输出到Hadoop File以Parquet格式存储。
摘要由CSDN通过智能技术生成

使用Kettle生成日期维度数据
需求:

  • 为了后续分析销售订单金额、订单笔数的周环比、周同比、月环比、月同比,需要提前使用Kettle生成时间维度工具(环比是相邻比较,同比是历史同期比较)
  • 按照以下字段生成 2019年一年的日期维度数据
    分析:
  • 日期使用 Canlendar、SimpleDateFormat,编写Javascript脚本实现
  • 国家法定节假日实现,需要往http://api.goseek.cn/Tools/holiday?date=20190102 年月日,发送请求,获取结果,以下为该REST API接口简介

1、接口地址:http://api.goseek.cn/Tools/holiday?date=数字日期,支持https协议。 2、返回数据:正常工作日对应结果为 0,,休息日对应结果为 1, 法定节假日对应结果为 2 3、节假日数据说明:本接口包含2017年起的中国法定节假日数据,数据来源国务院发布的公告,每年更新1次,确保数据 最新4、示例: http://timor.tech/api/holiday/info/2018-03-02 返回数据: {“code”:0,“type”:{“type”:0,“name”:“周五”,“week”:5},“holiday”:null} { “code”: 0, // 0服务正常。-1服务出错 “type”: { “type”: enum(0, 1, 2,3), // 节假日类型,分别表示 工作日、周末、节日、调休。 “name”: “周六”, // 节假日类型中文名,可能值为 周一 至 周日、假期的名字、某某调休。 “week”: enum(1 - 7) // 一周中的第几天。值为 1 - 7,分别表示 周一 至 周日。 },“holiday”: { “holiday”: false, // true表示是节假日,false表示是调休 “name”: “国庆前调休”, // 节假日的中文名。如果是调休,则是调休的中文名,例如’国庆前调休’ “wage”: 1, // 薪资倍数,1表示是1倍工资 “after”: false, // 只在调休下有该字段。true表示放完假后调休,false表示先调休再放假 “target”: ‘国庆节’ // 只在调休下有该字段。表示调休的节假日 } }

在这里插入图片描述
增加序列
Javascript代码
Http Client组件(5个并行度)
JSON Input
Switch/case
字段映射为常量
工作日
法定节假日
节假日调休补班
休息日
字段选择
Hadoop File Output
在这里插入图片描述
组件配置
1、生成记录组件
配置限制为 365
在这里插入图片描述
2、配置增加序列组件
3、Javascript组件,生成基本时间维度数据

//初始日期
        var initStr = "2019-01-01";
        //转为日期对象
        var dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd");
        var initDate = dateFormat.parse(initStr);
        //获取日历对象
        var calendar = java.util.Calendar.getInstance();

        //设置日历的时间就是我们的初始时间
        calendar.setTime(initDate);
        //使用日历加减天,变换日期
        calendar.add(java.util.Calendar.DAY_OF_MONTH, 1);
        //获取增加一天之后的日期
        var newDate = calendar.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值