Hive的内置函数非常丰富,包括数学函数、字符串函数、日期函数、聚合函数等。以下是一些常用的Hive内置函数:
abs(x)
: 返回x的绝对值。acos(x)
: 返回x的反余弦值。asin(x)
: 返回x的反正弦值。atan(x)
: 返回x的反正切值。ceil(x)
: 返回大于或等于x的最小整数。cos(x)
: 返回x的余弦值。cot(x)
: 返回x的余切值。degrees(x)
: 将x从弧度转换为度。e
:返回自然对数的底数e。exp(x)
: 返回e的x次幂。floor(x)
: 返回小于或等于x的最大整数。log(x)
: 返回x的自然对数(底数为e)。log10(x)
: 返回x的以10为底的对数。log2(x)
: 返回x的以2为底的对数。max(x, y)
: 返回x和y中的最大值。min(x, y)
: 返回x和y中的最小值。mod(x, y)
: 返回x除以y的余数。pow(x, y)
: 返回x的y次幂。radians(x)
: 将x从度转换为弧度。rand()
: 返回一个0到1之间的随机浮点数。round(x)
: 返回x四舍五入后的整数。sin(x)
: 返回x的正弦值。sqrt(x)
: 返回x的平方根。tan(x)
: 返回x的正切值。tanh(x)
: 返回x的双曲正切值。to_date(string)
: 将字符串转换为日期类型。to_date(timestamp)
: 将时间戳转换为日期类型。to_timestamp(string)
: 将字符串转换为时间戳类型。to_timestamp(date)
: 将日期转换为时间戳类型。unix_timestamp(date)
: 将日期转换为Unix时间戳。unix_timestamp(timestamp)
: 将时间戳转换为Unix时间戳。length(string)
: 返回字符串的长度。lower(string)
: 将字符串转换为小写。upper(string)
: 将字符串转换为大写。trim(string)
: 去除字符串两端的空白字符。substr(string, start, length)
: 从字符串中提取子串。concat(string, string, ...)
: 将多个字符串连接成一个字符串。instr(string, substring)
: 返回子串在字符串中的位置。locate(substring, string)
: 返回子串在字符串中首次出现的位置。replace(string, substring, new_substring)
: 将字符串中的子串替换为新的子串。split(string, delimiter)
: 将字符串按照指定的分隔符拆分为数组。substring(string, start, length)
: 从字符串中提取子串。upper(string)
: 将字符串转换为大写。word_count(string)
: 统计字符串中单词的数量。length(array)
: 返回数组的长度。first_element(array)
: 返回数组的第一个元素。last_element(array)
: 返回数组的最后一个元素。range(start, end)
: 返回一个从start到end的整数序列。posexplode(array)
: 将数组中的每个元素及其索引行记录返回。collect_list(array)
: 将数组中的所有元素收集到一个列表中。collect_set(array)
: 将数组中的所有元素收集到一个集合中,重复的元素会被去重。max_by(array, func)
: 返回数组中按func函数计算得到的最大值的对应元素。min_by(array, func)
: 返回数组中按func函数计算得到的最小值的对应元素。sort_array(array, ascending)
: 对数组进行排序,ascending指定排序顺序(升序或降序)。unique(array)
: 返回数组中的唯一元素组成的数组。posexplode(array)
: 返回一个行序列,其中每个行记录包含数组中的一个元素及其索引。size(map)
: 返回map中键值对的数量。keys(map)
: 返回map中所有的键组成的数组。values(map)
: 返回map中所有的值组成的数组。entry_schema(struct)
: 返回struct类型变量的模式(schema)。get_json_object(string, path)
: 从JSON字符串中提取指定路径的值。from_unixtime(unix_timestamp)
: 将Unix时间戳转换为字符串表示的日期和时间。to_unix(timestamp)
: 将时间戳转换为Unix时间戳。date_format(timestamp, format)
: 将时间戳按照指定的格式转换为字符串表示的日期。dayofweek(timestamp)
: 返回时间戳对应的星期几(1表示星期日,7表示星期六)。dayofmonth(timestamp)
: 返回时间戳对应的月份中的第几天。month(timestamp)
: 返回时间戳对应的月份。year(timestamp)
: 返回时间戳对应的年份。quarter(timestamp)
: 返回时间戳对应的季度(1表示第一季度,2表示第二季度,依此类推)。hour(timestamp)
: 返回时间戳对应的小时数。minute(timestamp)
: 返回时间戳对应的分位数。second(timestamp)
: 返回时间戳对应的秒数。weekofyear(timestamp)
: 返回时间戳对应的年份中的第几周。if(condition, then_value, else_value)
: 根据条件返回不同的值。nullif(x, y)
: 如果x等于y,则返回null,否则返回x。nvl(x, y)
: 如果x不为null,则返回x,否则返回y。nvl2(condition, x, y)
: 如果条件为真,则返回x,否则返回y。case_when(condition1, value1, condition2, value2, ..., conditionN, valueN)
: 根据多个条件返回不同的值。greatest(x, y, ...)
: 返回一组数中的最大值。least(x, y, ...)
: 返回一组数中的最小值。hex(x)
: 将整数转换为十六进制字符串表示。bin(x)
: 将整数转换为二进制字符串表示。cast(x as data_type)
: 将x转换为指定的数据类型。add_months(start_date, num_months)
: 在start_date的基础上增加num_months个月。next_day(date)
: 返回给定日期之后的下一个工作日。last_day(date)
: 返回给定日期所在月份的最后一天。date_add(date, num_days)
: 在给定日期的基础上增加num_days天。date_sub(date, num_days)
: 在给定日期的基础上减少num_days天。date_diff(end_date, start_date)
: 计算两个日期之间的天数差。month_diff(end_date, start_date)
: 计算两个日期之间的月份差。year_diff(end_date, start_date)
: 计算两个日期之间的年份差。next_date(date, num_days)
: 返回给定日期之后的num_days天对应的日期。prev_date(date, num_days)
: 返回给定日期之前的num_days天对应的日期。add_years(start_date, num_years)
: 在start_date的基础上增加num_years年。add_quarters(start_date, num_quarters)
: 在start_date的基础上增加num_quarters个季度。add_months(start_date, num_months)
: 在start_date的基础上增加num_months个月。from_unixtime(unix_timestamp, format)
: 将Unix时间戳转换为指定格式的字符串表示的日期和时间。unix_timestamp(date, format)
: 将指定格式的日期字符串转换为Unix时间戳。to_date(unix_timestamp)
: 将Unix时间戳转换为日期类型。to_timestamp(unix_timestamp)
: 将Unix时间戳转换为时间戳类型。date_format(date, format)
: 将日期转换为指定格式的字符串表示。dayofweek(date)
: 返回日期对应的星期几(1表示星期日,7表示星期六)。dayofmonth(date)
: 返回日期对应的月份中的第几天。month(date)
: 返回日期对应的月份。year(date)
: 返回日期对应的年份。quarter(date)
: 返回日期对应的季度(1表示第一季度,2表示第二季度,依此类推)。hour(date)
: 返回日期对应的小时数。minute(date)
: 返回日期对应的分位数。second(date)
: 返回日期对应的秒数。weekofyear(date)
: 返回日期对应的年份中的第几周。date_add(date, interval)
: 在给定日期的基础上增加指定的时间间隔。date_sub(date, interval)
: 在给定日期的基础上减少指定的时间间隔。date_diff(end_date, start_date)
: 计算两个日期之间的天数差。month_diff(end_date, start_date)
: 计算两个日期之间的月份差。year_diff(end_date, start_date)
: 计算两个日期之间的年份差。next_date(date, interval)
: 返回给定日期之后的指定时间间隔对应的日期。prev_date(date, interval)
: 返回给定日期之前的指定时间间隔对应的日期。add_years(start_date, num_years)
: 在start_date的基础上增加num_years年。add_quarters(start_date, num_quarters)
: 在start_date的基础上增加num_quarters个季度。add_months(start_date, num_months)
: 在start_date的基础上增加num_months个月。from_unixtime(unix_timestamp, format)
: 将Unix时间戳转换为指定格式的字符串表示的日期和时间。unix_timestamp(date, format)
: 将指定格式的日期字符串转换为Unix时间戳。to_date(unix_timestamp)
: 将Unix时间戳转换为日期类型。to_timestamp(unix_timestamp)
: 将Unix时间戳转换为时间戳类型。date_format(date, format)
: 将日期转换为指定格式的字符串表示。dayofweek(date)
: 返回日期对应的星期几(1表示星期日,7表示星期六)。dayofmonth(date)
: 返回日期对应的月份中的第几天。month(date)
: 返回日期对应的月份。year(date)
: 返回日期对应的年份。quarter(date)
: 返回日期对应的季度(1表示第一季度,2表示第二季度,依此类推)。hour(date)
: 返回日期对应的小时数。minute(date)
: 返回日期对应的分位数。second(date)
: 返回日期对应的秒数。weekofyear(date)
: 返回日期对应的年份中的第几周。date_add(date, interval)
: 在给定日期的基础上增加指定的时间间隔。date_sub(date, interval)
: 在给定日期的基础上减少指定的时间间隔。date_diff(end_date, start_date)
: 计算两个日期之间的天数差。month_diff(end_date, start_date)
: 计算两个日期之间的月份差。year_diff(end_date, start_date)
: 计算两个日期之间的年份差。next_date(date, interval)
: 返回给定日期之后的指定时间间隔对应的日期。prev_date(date, interval)
: 返回给定日期之前的指定时间间隔对应的日期。add_years(start_date, num_years)
: 在start_date的基础上增加num_years年。add_quarters(start_date, num_quarters)
: 在start_date的基础上增加num_quarters个季度。add_months(start_date, num_months)
: 在start_date的基础上增加num_months个月。from_unixtime(unix_timestamp, format)
: 将Unix时间戳转换为指定格式的字符串表示的日期和时间。unix_timestamp(date, format)
: 将指定格式的日期字符串转换为Unix时间戳。to_date(unix_timestamp)
: 将Unix时间戳转换为日期类型。to_timestamp(unix_timestamp)
: 将Unix时间戳转换为时间戳类型。date_format(date, format)
: 将日期转换为指定格式的字符串表示。dayofweek(date)
: 返回日期对应的星期几(1表示星期日,7表示星期六)。dayofmonth(date)
: 返回日期对应的月份中的第几天。month(date)
: 返回日期对应的月份。year(date)
: 返回日期对应的年份。quarter(date)
: 返回日期对应的季度(1表示第一季度,2表示第二季度,依此类推)。hour(date)
: 返回日期对应的小时数。minute(date)
: 返回日期对应的分位数。second(date)
: 返回日期对应的秒数。weekofyear(date)
: 返回日期对应的年份中的第几周。date_add(date, interval)
: 在给定日期的基础上增加指定的时间间隔。date_sub(date, interval)
: 在给定日期的基础上减少指定的时间间隔。date_diff(end_date, start_date)
: 计算两个日期之间的天数差。month_diff(end_date, start_date)
: 计算两个日期之间的月份差。year_diff(end_date, start_date)
: 计算两个日期之间的年份差。next_date(date, interval)
: 返回给定日期之后的指定时间间隔对应的日期。prev_date(date, interval)
: 返回给定日期之前的指定时间间隔对应的日期。add_years(start_date, num_years)
: 在start_date的基础上增加num_years年。add_quarters(start_date, num_quarters)
: 在start_date的基础上增加num_quarters个季度。add_months(start_date, num_months)
: 在start_date的基础上增加num_months个月。from_unixtime(unix_timestamp, format)
: 将Unix时间戳转换为指定格式的字符串表示的日期和时间。unix_timestamp(date, format)
: 将指定格式的日期字符串转换为Unix时间戳。to_date(unix_timestamp)
: 将Unix时间戳转换为日期类型。to_timestamp(unix_timestamp)
: 将Unix时间戳转换为时间戳类型。date_format(date, format)
: 将日期转换为指定格式的字符串表示。dayofweek(date)
: 返回日期对应的星期几(1表示星期日,7表示星期六)。dayofmonth(date)
: 返回日期对应的月份中的第几天。month(date)
: 返回日期对应的月份。year(date)
: 返回日期对应的年份。quarter(date)
: 返回日期对应的季度(1表示第一季度,2表示第二季度,依此类推)。hour(date)
: 返回日期对应的小时数。minute(date)
: 返回日期对应的分位数。second(date)
: 返回日期对应的秒数。weekofyear(date)
: 返回日期对应的年份中的第几周。date_add(date, interval)
: 在给定日期的基础上增加指定的时间间隔。date_sub(date, interval)
: 在给定日期的基础上减少指定的时间间隔。date_diff(end_date, start_date)
: 计算两个日期之间的天数差。month_diff(end_date, start_date)
: 计算两个日期之间的月份差。year_diff(end_date, start_date)
: 计算两个日期之间的年份差。next_date(date, interval)
: 返回给定日期之后的指定时间间隔对应的日期。prev_date(date, interval)
: 返回给定日期之前的指定时间间隔对应的日期。add_years(start_date, num_years)
: 在start_date的基础上增加num_years年。