Hive的基本窗口函数

一、Hive函数分类

1)从输入输出角度分类

  • 标准函数:一行数据中的一列或多列为输入,结果为单一值
  • 聚合函数:多行的零列到多列为输入,结果为单一值
  • 表生成函数:零个或多个输入,结果为多列或多行
    2)从实现方式分类
  • 内置函数
  • 自定义函数
    1.UDF:自定义标准函数
    2.UDAF:自定义聚合函数
    3.UDTF:自定义表生成函数

二、内置函数

Hive提供大量内置函数供开发者使用
1)标准函数

  1. 字符函数
  2. 类型转换函数
  3. 数学函数
  4. 日期函数
  5. 集合函数
  6. 条件函数

2)聚合函数

3)表生成函数int

一、字符函数

返回值 函数 描述
string concat(string a,string b…) 对二进制字节码或字节符按次序进行拼接
int instr(string str,string substr) 查找字符串str中字符串substr出现的位置
int length(string A) 返回字符串的长度
int locate(string substr, string str[, int pos]) 查找字符串str中的pos位置后字符串substr第一次出现的位置
string lower(string A) /upper(string A) 将字符串A的所有字母转换成小写/大写字母
string regexp_replace(string INITIAL_STRING,string PATTERN, string REPLACEMENT) 按正则表达式PATTERN将字符串中符合条件的部分替换成REPLACEMENT所指定的字符串
array split(string str, string pat) 按照正则表达式pat来分割字符串str
string substr(string binary A, int start, int len)substring(string
string trim(string A) 将字符串A前后出现的空格去掉
map str_to_map(text[, delimiter1, delimiter2]) 将字符串str按照指定分隔符转换成Map
binary encode(string src, string charset)

二、类型转换函数和数学函数

返回值 类型转换函数 描述
“typr” cast(expr as ) 将expr转换成type类型 如:cast(“1” as BIGINT) 将字符串1转换成了BIGINT类型
binary binary(string binary)
返回值 数学函数 描述
DOUBLE round(DOUBLE a) 返回对a四舍五入的BIGINT值
binary round(DOUBLE a, INT d) 返回对a四舍五入并保留d位小数位的值
BIGINT floor(DOUBLE a) 向下取整,如:6.10->6 -3.4->-4
DOUBLE rand(INT seed) 返回一个DOUBLE型随机数,seed是随机因子
DOUBLE power(DOUBLE a, DOUBLE p) 计算a的p次幂
DOUBLE abs(DOUBLE a) 计算a的绝对值

三、日期函数(比较重要的函数)

返回值 函数 描述
string from_unixtime(bigint unixtime[, string format]) 将时间戳转换成format格式
int unix_timestamp() 获取本地时区下的时间戳
bigint unix_timestamp(string date) 将格式为yyyy-MM的时间字符串转换成时间戳
string to_date(string timestamp) 返回时间字符串的日期部分
int year(string date)month/day/hour/minute/second/weekofyear 返回时间字符串的年份部分返回月/天/时/分/秒/第几周
int datediff(string enddate, string startdate) 计算开始时间到结束时间相差的天数
string date_add(string startdate, int days) 从开始时间startdate加上days
string date_sub(string startdate, int days) 从开始时间startdate减去days
date current_date 返回当前时间的日期
timestamp current_timestamp 返回当前时间戳
string date_format(date/timestamp/string ts, string fmt) 按指定格式返回时间date 如:date_format(“2016-06-22”,“MM-dd”)=06-22

注意:时间戳返回的是秒,计算相差的小时的话应该两日期相减除以3600!

四、集合函数

返回值 函数 描述
int size(Map<K.V>) 返回map中键值对个数
int size(Array) 返回数组的长度
array (Map<K.V>) 返回map中的所有key
array map_values(Map<K.V>) 返回map中的所有value
boolean array_contains(Array, value) 如该数组Array包含value返回true。,否则
返回false
array sort_array(Array) 对数组进行排序

五、条件函数

返回值 函数 描述
T if(boolean testCondition, T valueTrue, TvalueFalseOrNull) 如果testCondition 为true就返回valueTrue,否则返回valueFalseOrNull
T nvl(T value, T default_value) value为NULL返回default_value,否则返回value
T COALESCE(T v1, T v2, …) 返回第一非null的值,如果全部都为NULL就返回NULL
T CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END 如果a=b就返回c,a=d就返回e,否则返回f
T CASE WHEN a THEN b[WHEN c THEN d]* [ELSE e] END 如果a=ture就返回b,c= ture就返回d,否则返回e
boolean isnull( a ) 如果a为null就返回true,否则返回false
boolean isnotnull ( a ) 如果a为非null就返回true,否则返回false

六。聚合函数和表生成函数

扫描二维码关注公众号,回复: 11446346 查看本文章
  • 聚合函数
    count、sum、max、min、avg、var_samp等

  • 表生成函数:输出可以作为表使用

返回值 函数 描述
N rows explode(array) 对于array中的每个元素生成一行且包含该元素
N rows explode(MAP) 每行对应每个map键值对其中一个字段是map的键,另一个字段是map的值
N rows posexplode(ARRAY) 与explode类似,不同的是还返回各元素在数组中的位置
N rows stack(INT n, v_1, v_2, …, v_k) 把k列转换成n行,每行有k/n个字段,其中n必须是常数
tuple json_tuple(jsonStr, k1, k2, …) 从一个JSON字符串中获取多个键并作为一个元组返回,与get_json_object不同的是此函数能一次获取多个键值

猜你喜欢

转载自blog.csdn.net/weixin_42507474/article/details/107309702