Hive函数

本文介绍了SQL中的关键函数,包括类型转化、条件判断、内置表生成及字符串操作等,帮助读者理解如何利用这些函数进行高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型转化函数


返回类型函数                            说明
指定“Type”  cast(expr as <Type>)   类型转换。例如将字符“1”转化为整数:cast('1' as bigint),如果转化失败返回NULL

条件函数


返回类型      函数说明
Tif(boolean testCondition, T valueTrue, T valueFalseorNull)判断是否满足条件,满足返回第一个值,否则返回另外一个值
Tcoalesce(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
Tcase when a then b [when c then d] then e end当a时返回b,当c时返回d,否则为e

内置表生成函数


返回类型函数说明
数组explode(Array<TYPE> a)数组一条记录中有多个参数,将多个参数拆分,每个参数生成一列
 json_tuple 

explode示范
数组SQL返回
myCol[1,2] [3,4]select explode(myCol) as  myNewCol from myTablemyNewCol
1
2
3
4

字符串函数


返回类型 函数 说明
int length(string A) 返回字符串的长度
string reverse(string A) 返回倒序字符串
string concat(string A, string B…) 连接多个字符串,合并为一个字符串,可以接受任意数量的输入字符串
string concat_ws(string SEP, string A, string B…) 链接多个字符串,字符串之间以指定的分隔符分开。
string substr(string A, int start) substring(string A, int start) 从文本字符串中指定的起始位置后的字符。
string substr(string A, int start, int len) substring(string A, int start, int len) 从文本字符串中指定的位置指定长度的字符。
string upper(string A) ucase(string A) 将文本字符串转换成字母全部大写形式
string lower(string A) lcase(string A) 将文本字符串转换成字母全部小写形式
string trim(string A) 删除字符串两端的空格,字符之间的空格保留
string ltrim(string A) 删除字符串左边的空格,其他的空格保留
string rtrim(string A) 删除字符串右边的空格,其他的空格保留
string regexp_replace(string A, string B, string C) 字符串A中的B字符被C字符替代
string regexp_extract(string subject, string pattern, int index) 通过下标返回正则表达式指定的部分。regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) returns ‘bar.’
string parse_url(string urlString, string partToExtract [, string keyToExtract]) 返回URL指定的部分。parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) 返回:’facebook.com’
string get_json_object(string json_string, string path) select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a;
string space(int n) 返回指定数量的空格
string repeat(string str, int n) 重复N次字符串
int ascii(string str) 返回字符串中首字符的数字值
string lpad(string str, int len, string pad) 返回指定长度的字符串,给定字符串长度小于指定长度时,由指定字符从左侧填补。
string rpad(string str, int len, string pad) 返回指定长度的字符串,给定字符串长度小于指定长度时,由指定字符从右侧填补。
array split(string str, string pat) 将字符串转换为数组。
int find_in_set(string str, string strList) 返回字符串str第一次在strlist出现的位置。如果任一参数为NULL,返回NULL;如果第一个参数包含逗号,返回0。
array<array<string>> sentences(string str, string lang, string locale) 将字符串中内容按语句分组,每个单词间以逗号分隔,最后返回数组。 例如sentences(‘Hello there! How are you?’) 返回:( (“Hello”, “there”), (“How”, “are”, “you”) )
array<struct<string,double>> ngrams(array<array<string>>, int N, int K, int pf) SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;
array<struct<string,double>> context_ngrams(array<array<string>>, array<string>, int K, int pf) SELECT context_ngrams(sentences(lower(tweet)), array(null,null), 100, [, 1000]) FROM twitter;

### Hive内置函数概述 Hive 提供了大量的内置函数,用于支持数据处理中的各种操作需求。这些函数可以通过 `show functions` 命令查看完整的列表[^1]。对于特定的函数,可以使用 `desc function 函数名` 查看其基本描述,而更详细的用法则可通过 `desc function extended 函数名` 获取。 #### 内置函数分类 Hive 的内置函数通常分为以下几类: 1. **字符串函数** 例如 `upper()` 将字符串转换为大写形式,或者 `concat()` 进行字符串拼接。 2. **数值函数** 如 `abs(x)` 返回绝对值,`round(x)` 对浮点数四舍五入等。 3. **日期时间函数** 比如 `from_unixtime(unix_time, format)` 和 `unix_timestamp(date_string, pattern)` 可以实现 Unix 时间戳与标准时间格式之间的相互转换。 4. **集合与数组函数** 支持对复杂类型的处理,像 `array_contains(array, value)` 判断某个值是否存在于数组中。 5. **条件判断函数** 包括但不限于 `if(condition, true_value, false_value)` 或者 `case when ... then ... end`. 6. **聚合函数** 主要用于统计分析场景下的汇总计算,比如 `sum(column_name)`, `count(*)`, `avg(field)`. 7. **窗口函数** 实现基于分区的数据排序和排名等功能,典型代表有 `rank() over (...)`, `dense_rank() over (...)`. 8. **其他特殊用途的功能型函数** - `hash(a1, a2,...)` 计算输入参数组合后的散列值][^[^32]。 - `java_method(class, method [, arg1 [,arg2...]])`: 动态加载 Java 类并执行指定的方法调用[^3]. 以下是几个常用函数的具体说明及其语法示例: #### 示例代码展示部分重要功能的应用方式 ```sql -- 字符串转大写的例子 SELECT upper('hello world'); -- 数学运算取整的例子 SELECT round(3.1415); -- 处理日期时间字段 SELECT from_unixtime(UNIX_TIMESTAMP(), 'yyyy-MM-dd HH:mm:ss') AS current_datetime; -- 使用反射机制调用外部Java逻辑 SELECT java_method('java.lang.Math', 'sqrt', 16); ``` 以上仅列举了一小部分内容作为示范;实际应用过程中可以根据具体业务需求深入探索更多可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值