hive函数整理

这篇博客汇总了Hive的各种函数,包括Aggregate、Analytic、Collection、Complex Type、Conditional、Date、Mathematical、String、Data Masking、Table Generating、Type Conversion以及Misc类别。特别提到了Hive2.0中新增的数据脱敏函数,并介绍了如mask()、mask_first_n()等函数的用法。此外,还涵盖了加密解密、哈希、XML处理等实用函数。
摘要由CSDN通过智能技术生成

Aggregate

Return Type Name(Signature) Description
BIGINT count(*), count(expr), count(DISTINCT expr[, expr…]) count(*) 统计总行数,包括含有NULL值的行 count(expr) 统计提供非NULL的expr表达式值的行数 count(DISTINCT expr[, expr…]) 统计提供非NULL且去重后的expr表达式值的行数
DOUBLE sum(col), sum(DISTINCT col) sum(col),表示求指定列的和,sum(DISTINCT col)表示求去重后的列的和
DOUBLE avg(col), avg(DISTINCT col) avg(col),表示求指定列的平均值,avg(DISTINCT col)表示求去重后的列的平均值
DOUBLE min(col) 求指定列的最小值
DOUBLE max(col) 求指定列的最大值
DOUBLE variance(col), var_pop(col) 求指定列数值的方差
DOUBLE var_samp(col) 求指定列数值的样本方差
DOUBLE stddev_pop(col) 求指定列数值的标准偏差
DOUBLE stddev_samp(col) 求指定列数值的样本标准偏差
DOUBLE covar_pop(col1, col2) 求指定列数值的协方差
DOUBLE covar_samp(col1, col2) 求指定列数值的样本协方差
DOUBLE corr(col1, col2) 返回两列数值的相关系数
DOUBLE percentile(BIGINT col, p) 返回col的p%分位数
arrary collect_set(col) 配合group by 或者开窗使用,形成一个不可重复的集合
arrary collect_list(col) 配合group by 或者开窗使用,形成一个不可重复的集合

Analytic

cume_dist() 小于等于当前行的值的行数/分组内总行数–比如,统计小于等于当前薪水的人数,所占总人数的比例
dense_rank() OVER([partition_by_clause] order_by_clause) 连续排序,如果有两个第一级别时,接下来是第二级别
first_value(expr) OVER([partition_by_clause] order_by_clause [window_clause]) 取分组内排序后,截止到当前行,第一个值
lag(expr [, offset] [, default]) OVER ([partition_by_clause] order_by_clause) LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值,第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
last_value(expr) OVER([partition_by_clause] order_by_clause [window_clause]) 取分组内排序后,截止到当前行,最后一个值
lead(expr [, offset] [, default]) OVER([partition_by_clause] order_by_clause) 用于统计窗口内往下第n行值,第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
ntile() 它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1。
percent_rank() 分组内当前行的RANK值-1/分组内总行数-1
rank() OVER([partition_by_clause] order_by_clause) 跳跃排序,如果有两个第一级别时,接下来是第三级别
row_number() OVER([partition_by_clause] order_by_clause) 排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。

Collection

Return Type Name(Signature) Description
int size(Map<K.V>) 求map的长度
int size(Array) 求数组的长度
array map_keys(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) 按自然顺序对数组进行排序并返回

Complex Type

array array(val1, val2, …) 创建一个数组
union create_union(tag, val1, val2, …) 创建一个union
map map(key1, value1, …) 创建一个map
struct named_struct(name1,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值