热线电话:13121318867

登录
2021-03-30 阅读量: 586
Hive常用语法:函数

聚合函数:Aggregate

  • avg([DISTINCT] col):返回该组或该组中不同值元素的平均值

  • max(col):返回组中对应列的最大值

  • min(col):返回组中对应列的最小值

  • sum([DISTINCT] col):返回该组或该组中不同值元素的和

  • count([DISTINCT] col): 返回该组或该组中不同值元素的数量,不包含NULL

  • count(*): 返回检索的行数(包含NULL行)

分析函数:Analytic

1. 窗函数:sum, avg, min, max

2. 序列函数:ntile, row_number(), rank, dense_rank

2.1row_number,rank,dense_rank

条件判断

  • if(BOOLEAN condition,val1,val2) : val1 if condition=True else val1

  • isnotnull(a): True if a is not null else False

  • coalsce(x,y,z): y if x is null else z

  • isnull(a): True if a is null else False

  • nullif(a,b): NULL if a=b else a

  • nvl(col,default_value): col if col is not null else default_value

  • 日期函数

  • add_months(DATE|STRING|TIMESTAMP start_date, INT num_months): 在原有日期的基础上增加num_months个月,注意:start_date = '2020-01-31',num_months=1, 由于二月份只有29天,因此返回2月底的一天,即2020-02-29

  • current_date(): 返回当前日期,yyyy-MM-dd

  • current_timestamp(): 返回当前时间,yyyy-MM-dd DD:mm:ss.sss

  • datediff(STRING enddate, STRING startdate): 返回两个日期相差的天数

  • date_add(DATE startdate, INT days): 在原有日期基础上增加days天后的日期

  • date_sub(DATE startdate, INT days): 在原有日期基础上减去days天后的日期

  • date_format(DATE|TIMESTAMP|STRING ts, STRING fmt): 返回日期的某部分特征,如:date_format('2015-04-08', 'y') = '2015'

  • day(STRING date)day('1970-11-01 00:00:00') = 1, day('1970-11-01') = 1

  • dayofmonth(STRING date): dayofmonth('1970-11-01 00:00:00') = 1, dayofmonth('1970-11-01') = 1.

  • hour(STRING date): hour('2009-07-30 12:58:59') = 12, hour('12:58:59') = 12

  • minute(STRING date): 返回时间戳所在的分钟

  • second(string date): 返回时间戳所在的秒

  • extract(field FROM source): 提取soure(string or timestamp)中的时间属性:day, dayofweek, hour, minute, month, quarter, second, week and year, 如:extract(day from current_date())

  • last_day(STRING date): 返回日期所在月的最后一天

  • month(STRING date): 返回日期所在的月份

  • weekofyear(STRING date): 返回所处的周数

  • year(STRING date): 返回年份

  • quarter(DATE|TIMESTAMP|STRING a): 返回时间戳所在的季度

  • months_between(DATE|TIMESTAMP|STRING date1, DATE|TIMESTAMP|STRING date2): 返回两个日期间相距的月份

  • from_unixtime(BIGINT unixtime [, STRING format]): from_unixtime(1237532400,'yyyy-MM-dd') = '2009-03-20'

  • unix_timestamp([STRING date [, STRING pattern]]): unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400

  • from_utc_timestamp(T a, STRING timezone): UTC转换为指定时区,from_utc_timestamp('1970-01-01 08:00:00','PST') = 1970-01-01 00:00:00

  • to_utc_timestamp(T a, STRING timezone): 特定时区转化为UTC时区

  • next_day(STRING start_date, STRING day_of_week)next_day('2015-01-14', 'TU') = 2015-01-20

  • to_date(STRING timestamp): 返回时间戳的日期部分

  • trunc(STRING date, STRING format): 日期转化为指定形式,trunc('2010-03-03','YYYY')='2010-01-01', trunc('2010-03-03','MM')='2010-03-01',format:MONTH/MON/MM, YEAR/YYYY/YY

字符串函数:String

  • concat(STRING|BINARY a, STRING|BINARY b...): 拼接字符串

  • concat_ws(STRING sep, STRING a, STRING b...): 按指定字符拼接字符串


59.5849
0
关注作者
收藏
评论(0)

发表评论

暂无数据