1、功能入口
1)、【新建模型】并且在模型中增加 【ETL高级查询】。
2)、进入到 ETL高级查询:
- 先从左侧拖入【Excel文件】,上传本地excel文件,点击执行该节点。示例数据订单数据.xlsx
- 拖入【读取Excel sheet】节点,再 执行该节点:
- 拖入【列选择】组件,连接组件,再执行该节点:
- 拖入【派生列】,连接组件,再 执行该节点:
- 点击【派生列配置】,进入配置面板,输入相关SparkSQL函数,参考:2、函数说明
2、函数说明
...
1、函数说明
函数 | 描述 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
21 | add_months(start_date, num_months) :增加月份 | 函数名称:add_months(日期字段, 月数): 函数说明: 返回指定日期前或者后几个月;比如根据订单日期获取上月、获取下月。 返回指定日期前或者后几个月;比如根据订单日期获取上月、获取下月。 示例:在派生列节点输入add在派生列节点输入add_months(日期字段, 月数),替换成相应字段,如下图: 1、下月:add1、下月:add_months([订单时间],1) 2、上月:add2、上月:add_months([订单时间],-1)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
32 | date_add(start_date, num_days) : | 函数名称:date_format(日期字段, 格式): 函数说明: 修改日期格式,对时间字段进行格式化。 示例:函数名称:date_add(日期字段, 天数): 函数说明: 返回指定日期前或者后几天;比如根据订单日期获取昨天、获取明天。 返回指定日期后几天;比如根据订单日期获取明天。 示例:在派生列节点输入date_add(日期字段, 天数),替换成相应字段,如下图: 1、昨天:date1、明天:date_add([订单日期],-1) 2、明天:date_add([订单日期],1) | 4 | date_format | 1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | date_format(timestamp, fmt) :日期格式化 | 函数名称:date_format(日期字段, 格式): 函数说明: 修改日期格式,对时间字段进行格式化。 示例: 1、【年月日】 转 【年月】:date_format([OrderDate],'yyyy-MM'),※特别:M要大写! 2、【年月日】 转 【年】:date_format([OrderDate],'y')或date_format([OrderDate],'yyyy') 3、【年月日】转【年月日时分秒】:date_format([OrderDate],'yyyy-MM-dd HH:mm:ss') 参数说明:
| F | aligned day of week in month | number(1) | 3
a |
上午/下午 | am-pm | PM | |
h | 小时 | number(2) | 12 |
K |
小时 (0-11) | number(2) | 0 |
k |
小时(1-24) | number(2) | 0 |
H |
小时(0-23) | number(2) | 0 |
m |
分钟 | number(2) | 30 |
s |
秒 | number(2) | 55 | |
yyyy-MM-dd | 年月日 | 年月日 | 2023-10-11 |
yyyy-MM-dd HH:mm:ss | 年月日 时分秒 | 年月日 时分秒 | 2023-10-11 00:00:00 |
date_sub(start_date, num_days)
:返回指定日期前几天;比如根据订单日期获取昨天
dayofweek
函数名称:date_sub(日期字段, 天数):
date_sub
从日期减去天数
date_trunc
返回截断为指定单位的日期
datediff
返回日期之间的天数差
day, dayofmonth
返回月中某日
函数说明: 返回指定日期前几天;比如根据订单日期获取昨天。
示例:
1、昨天:date_sub([订单日期],1)
date_trunc(fmt, timestamp)
: 返回格式化截断为指定单位的日期
函数名称:date_trunc(格式,日期字段):
函数说明: 返回格式化截断为指定单位的日期
示例:
1、按年截取:date_trunc('YEAR', [OrderDate]),也可以用: 'YYYY', 'YY'
2、其他截取格式
date_trunc('MM', '2015-03-05T09:32:05.359'); 2015-03-01 00:00:00
date_trunc('DD', '2015-03-05T09:32:05.359'); 2015-03-05 00:00:00
date_trunc('HOUR', '2015-03-05T09:32:05.359'); 2015-03-05 09:00:00
date_trunc('MILLISECOND', '2015-03-05T09:32:05.123456'); 2015-03-05 09:32:05.123
date_diff(endDate, startDate) /datediff(endDate, startDate)
: 返回日期之间的天数差
函数名称:date_trunc(结束日期, 开始日期):
函数说明: 返回日期之间的天数差
示例:
1、日期天数差:date_diff([RequiredDate],[OrderDate])或者datediff([RequiredDate],[OrderDate])
day(date), dayofmonth(date)
函数说明:返回月中某日
SELECT day('2023-07-30'); 30
dayofweek(date)
:返回星期几(1-7)
函数说明:返回星期几(1-7)
dayofyear
返回年中的日
SELECT dayofweek('2023-07-30'); 1
dayofyear(date)
:返回年中的日
函数说明:返回年中的日
SELECT dayofyear('2023-04-09');99
from_unixtime(unix_time[, fmt])
:以Unix时间返回日期
函数说明:以Unix时间返回日期
SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss'); 1970-01-01 08:00:00
SELECT from_unixtime(0); 1970-01-01 08:00:00
from_utc_timestamp(timestamp, timezone)
:以UTC时间返回日期
函数说明:以UTC时间返回日期
hour
返回输入的小时
SELECT from_utc_timestamp('2023-08-31', 'Asia/Seoul'); 2023-08-31 09:00:00
hour(timestamp)
:返回输入的小时
函数说明:返回输入的小时
SELECT hour('2023-07-30 12:58:59'); 12
last_day(date)
:返回日期所属月份的最后一天
函数说明:返回日期所属月份的最后一天
minute
返回输入的分钟数
month
返回输入的月份
months_between
月数介于
next_day
返回比输入晚的第一天
quarter
返回输入的季度
second
返回字符串的秒数
to_date
将字符串转换为日期。 注意: 字符串 必须 采用格式 yyyy
SELECT last_day('2009-01-12'); 2009-01-31
minute(timestamp)
:返回输入的分钟数
函数说明:返回输入的分钟数
SELECT minute('2023-07-30 12:58:59'); 58
month(date)
:返回输入的月份
函数说明:返回输入的月份
SELECT month('2023-07-30'); 7
months_between(timestamp1, timestamp2[, roundOff])
:返回介于两个时间月份数
函数说明:返回介于两个时间月份数
如果时间戳1晚于时间戳2,则结果为正值。如果时间戳1和时间戳2在同一个月的同一天,或者两者都是该月的最后一天,则将忽略。否则,差额将以每月31天为基础计算,并四舍五入至8位,除非舍入为false。
next_day(start_date, day_of_week)
:返回比输入日期晚的第一天
函数说明:返回比输入日期晚的第一天
day_of_week参数:Mon、Tue、Wed、Thu、Fri、Sat、Sun。
SELECT next_day('2015-01-14', 'TU'); 2015-01-20
quarter(date)
:返回日期所在的季度
函数说明:返回输入日期所在的季度
SELECT quarter('2023-08-31'); 3
second(timestamp)
:返回字符串的秒数
函数说明:返回字符串的秒数
SELECT second('2023-07-30 12:58:59'); 59
to_date(date_str[, fmt])
:将字符串转换为日期
函数说明:将字符串转换为日期。
注意: 字符串 必须 采用格式:yyyy-mm-ddTHH24:MM:SS.
、yyyy-mm-dd、yyyy-mm-dd HH24:MM:SS等
to_timestamp(timestamp_str[, fmt])
函数说明:将字符串转换为时间戳。 注意: 字符串 必须 采用格式 yyyy 采用格式 yyyy-mm-ddTHH24:MM:SS.
SELECT to_timestamp('2023-12-31 00:12:00'); 2023-12-31 00:12:00
SELECT to_timestamp('2023-12-31', 'yyyy-MM-dd'); 2023-12-31 00:00:00
to_unix_timestamp(timeExp[, fmt])
函数说明:将字符串转换为Unix时间戳
SELECT to_unix_timestamp('2023-04-08', 'yyyy-MM-dd'); 1680883200
to_utc_timestamp(timestamp, timezone)
函数说明:将字符串转换为UTC时间戳
trunc
截断日期
unix_timestamp
返回Unix时间戳
weekday
SELECT to_utc_timestamp('2023-08-31', 'Asia/Seoul');2023-08-30 15:00:00
trunc(date, fmt)
:截断日期
函数说明:截断日期
SELECT trunc('2019-08-04', 'week'); 2019-07-29
SELECT trunc('2019-08-04', 'quarter'); 2019-07-01
SELECT trunc('2009-02-12', 'MM'); 2009-02-01
SELECT trunc('2015-10-27', 'YEAR'); 2015-01-01
unix_timestamp(date)
:返回Unix时间戳
函数说明:返回Unix时间戳
SELECT unix_timestamp(); 1476884637
SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd'); 1460041200
weekday(date)
:星期几(0-6)
year
函数说明:星期几(0-6)
weekofyear
返回给定日期在一年中的哪一周
返回字符串的年份 SELECT weekday('2009-07-30'); 3
weekofyear(date)
:年中哪一周
函数说明:返回给定日期在一年中的哪一周
SELECT weekofyear('2008-02-20'); 8
year(date)
:返回本年
函数说明:返回字符串的年份
SELECT year('2023-07-30'); 2023
current_date()
current_date
:获取当前日期
函数说明:返回当前日期
SELECT current_date(); 2023-11-27
now()
:获取当前日期时间
函数说明:返回当前日期时间
SELECT now(); 2023-11-27 17:43:57.369