hive窗口函数学习


1、日期间隔

datediff(day1,day2)    表示day1-day2,支持字符串 '2016-02-26';

2、计算前一条数据

LAG(dt,1) OVER(PARTITION BY user_uniq ORDER BY dt) 

3、截取字符串

substr(a,1,4)  从a的第一位开始取四个

4、常用命令

  1. sudo 权限,可建表

  2. ssh 访问服务器

  3. 增加内存

set mapreduce.map.memory.mb=8192;

set mapreduce.reduce.memory.mb=8192;

set mapreduce.map.java.opts=-Xmx8192M;

set mapreduce.reduce.java.opts=-Xmx8192M;


5、group by

在使用GROUP BY时,除聚合函数外其他已选择列必须包含在GROUP BY子句中。


6、union all

hive 中同属性多维统计问题通常用 union all 组合出各种维度然后 group by 进行求解


7、日期处理to_date、year、month、day、hour、minute、second、日期转周函数: weekofyear、date_add、date_sub

  1.   to_date(string timestamp)  unix时间戳转化成日期,返回值:   string

  2. 说明: 返回日期时间字段中的日期部分。
    举例:hive>   select to_date('2016-02-26 10:03:01') from dual;
    2016-02-26

  3. year、month、day、hour、minute、second取年、月、日、时分秒

  4. 语法:   year(tring date)   weekofyear (string date) 

  5. 日期增加函数: date_add语法:   date_add(string startdate, int days) ,返回值: string,说明: 返回开始日期startdate增加days天后的日期。举例:hive>   select date_add('2016-02-26',10) from dual;结果:        2016-03-07

  6. 日期减少函数: date_sub语法:   date_sub (string startdate, int days) ,返回值: string,说明: 返回开始日期startdate减少days天后的日期。举例:hive>   select date_sub('2016-02-26',10) from dual;结果:         2016-02-16


8、日期函数UNIX时间戳转日期函数: from_unixtime

  1. 语法:from_unixtime(bigint unixtime[, string format]) ,返回值: string

  2. 说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式。

  3. 举例:hive> select from_unixtime(1323308943,'yyyyMMdd') from dual;

    20111208


9、查看N天前的日期:

select from_unixtime(unix_timestamp('20160226','yyyyMMdd') - N*86400,'yyyyMMdd') from t_lxw_test1 limit 1;  


10、获取当前UNIX时间戳函数: unix_timestamp

  1. 语法:   unix_timestamp() ,返回值:   bigint

  2. 说明: 获得当前时区的UNIX时间戳
    举例:
    hive>   select unix_timestamp() from dual;
    1323309615


11、获取两个日期之间的天数/秒数/分钟数等等:

select ( unix_timestamp('2016-02-26','yyyy-MM-dd')-unix_timestamp('2016-02-26','yyyy-MM-dd') ) / 86400  from t_lxw_test limit 1;  


12、日期转UNIX时间戳函数: unix_timestamp

  1. 语法:unix_timestamp(string date) ,返回值:   bigint

  2. 说明: 转换格式为“yyyy-MM-dd HH:mm:ss“的日期到UNIX时间戳。如果转化失败,则返回0。
    举例:
    hive>   select unix_timestamp('2011-12-07 13:01:03') from dual;
    1323234063


13、指定格式日期转UNIX时间戳函数: unix_timestamp

  1. 语法:   unix_timestamp(string date, string pattern) ,返回值:   bigint

  2. 说明: 转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。
    举例:
    hive>   select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from dual;
    1323234063





你可能感兴趣的:(hive日期函数)