hive常用函数

字符串
   concat(str1,str2)  字符串拼接
   regexp_replace(string A, string B, string C) 字符串替换函数,将字符串A中的B用C替换。
   repeat(string str, int n) 重复N次字符串
   lpad(string str, int len, string pad)将字符串str用pad进行左补足到len位(rpad右补足)
   trim(string A) 删除字符串两边的空格,中间的会保留。ltrim(string A) ,rtrim(string A)
   if(boolean testCondition, T valueTrue, T valueFalseOrNull) ,根据条件返回不同的值
   nvl(T value, T default_value) 如果T is null ,返回默认值
   length(string A) 返回字符串A的长度
   //不能使用?(
   greatest(T v1, T v2, ...) 返回最大值,会过滤null
   least(T v1, T v2, ...) 返回最小值,会过滤null

   rand(), 返回0-1的随机值。rand(INT seed) 返回固定的随机值。
   split(str, regex) ,安装规则截取字符串,返回数组
   case when 条件then 为真的值 else 为假的值 end
   


日期
    unix_timestamp()   获取当前日期
    to_date(string timestamp) 将时间戳转换成日期型字符串
    datediff(string enddate, string startdate) 返回int 的两个日期差
    date_add(string startdate, int days) 日期加减
    current_timestamp 和 current_date 返回当前时间戳,当前日期
    date_format(date/timestamp/string ts, string fmt) 按照格式返回字符串
    last_day(string date) 返回 当前时间的月末日期




窗口处理函数
    1. 
    FIRST_VALUE、LAST_VALUE、SUM、MAX、MIN、RANK、DENSE_RANK、ROW_NUMBER、NTILE
    RANK         当值相同排名是一样的,但是名次可能是不全的 
    ROW_NUMBER   当值相同排名会有先后
    DENSE_RANK   当值相同排名是一样的,没有先后,名次是全的
    2.
    rows between ... and ... 窗口的划分    按照数据行划分窗口
        UNBOUNDED PRECEDING 从当前行往前到头
        UNBOUNDED FOLLOWING 从当前行往后到头
        N PRECEDING 从当前行往前计算N条记录
        N FOLLOWING 从当前行往后计算N条记录
        CURRENT ROW 当前行
 rows between UNBOUNDED PRECEDING and CURRENT ROW  往前从头到当前行的所有记录参与计算
 rows between CURRENT ROW and UNBOUNDED FOLLOWING  从当前行到最后一行的所有记录参与计算
 rows between 3 PRECEDING and 4 FOLLOWING 从当前行往前三行往后四行的记录参与计算
    如果有ORDER BY 则rows between默认是:RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    如果没有ORDER BY 则rows between默认是:ROW BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED 
   3.order by 排序条件
   4.group by str1,str2 grouping sets((str1,str2),str1,str2,())
相当于四条sql 求2个条件下分组,一个条件为空,两个全部为空(全部)

你可能感兴趣的:(大数据,hive)