从 apache drill 中的日期获取一年中的一周
Get week of the year from date in apache drill
我正在尝试将某些数据中的时间戳(使用 apache drill)转换为一年中的星期。
根据 reference 我能看到的最接近的东西是 "extract" 函数,但这只适用于 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 单位。
原始日期示例
ID, START_DATE
1, 2014-07-07T13:20:34.000Z
查询(类似这样)
SELECT ID, EXTRACT(WEEK, START_DATE) FROM MY_TABLE;
得到这样的结果:
ID, START_DATE
1, 27
目前Extract function支持以下时间单位:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。
示例:
SELECT ID,EXTRACT(YEAR FROM START_DATE) from dfs.`/home/dev/Desktop/date.csv`;
您可以创建自己的函数来获取一年中的第几周。检查 docs 以开发自定义函数。
几周后我再次遇到这个问题,而不是在 drill 中编写一个函数(因为我觉得这太多了,我只需要粗略估计一周)我做了以下事情:
# 7 * 24 * 60 * 60 = 604800
select
START_DATE as `ORIGINAL DATE`,
TRUNC(CAST((CAST((UNIX_TIMESTAMP(START_DATE,'yyyy-MM-dd HH:mm:ss.SSS') - UNIX_TIMESTAMP(EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')),'yyyy')) AS FLOAT) / CAST(604800 AS FLOAT)) AS FLOAT)) + 1 as `WEEK_NO`,
EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')) as `YEAR`
from
GAME_DATA
order by
START_DATE
limit 10;
我正在尝试将某些数据中的时间戳(使用 apache drill)转换为一年中的星期。
根据 reference 我能看到的最接近的东西是 "extract" 函数,但这只适用于 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 单位。
原始日期示例
ID, START_DATE
1, 2014-07-07T13:20:34.000Z
查询(类似这样)
SELECT ID, EXTRACT(WEEK, START_DATE) FROM MY_TABLE;
得到这样的结果:
ID, START_DATE
1, 27
目前Extract function支持以下时间单位:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。
示例:
SELECT ID,EXTRACT(YEAR FROM START_DATE) from dfs.`/home/dev/Desktop/date.csv`;
您可以创建自己的函数来获取一年中的第几周。检查 docs 以开发自定义函数。
几周后我再次遇到这个问题,而不是在 drill 中编写一个函数(因为我觉得这太多了,我只需要粗略估计一周)我做了以下事情:
# 7 * 24 * 60 * 60 = 604800
select
START_DATE as `ORIGINAL DATE`,
TRUNC(CAST((CAST((UNIX_TIMESTAMP(START_DATE,'yyyy-MM-dd HH:mm:ss.SSS') - UNIX_TIMESTAMP(EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')),'yyyy')) AS FLOAT) / CAST(604800 AS FLOAT)) AS FLOAT)) + 1 as `WEEK_NO`,
EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')) as `YEAR`
from
GAME_DATA
order by
START_DATE
limit 10;