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年。