举个例子,说说用SQL怎么处理文本数据
sinye56 2024-10-16 14:47 3 浏览 0 评论
从数据格式上讲,类似商品标题、用户评论、文章等文本型数据看起来杂乱无章,充满了噪声,充满了不确定性。这样的数据,处理起来比较棘手。我们只能不断优化处理的规则,以提高处理的准确率,例如,处理10000条文本数据,之前准确处理了9000条数据,准确率90%,优化规则后,准确率提高至95%。实际情况下处理准确率很难达到100%。除非穷举并加以特殊处理,但这显然不是有效的办法。
下面的两个例子,分享一些在HIVE上如何写SQL处理文本数据的经验(在其它数据库或数据平台写SQL也可作以参考)。
文本处理常用到的几个HIVE函数:
- regexp_extract(string A,string B,int i):从字符串A中提取出第i+1次满足条件的子字符串B,字符串B通常以正则表达式出现
- regexp_replace(string A,string B,string C):将字符串A中所有的子字符串B替换为字符串C
- split(string A,string B):将字符串A以字符串B中的任一个字符为分隔符切分成几个部分,以数组形式返回,split(string A,string B)[0]返回第一部分,split(string A,string B)[1]返回第二部分
- reverser(string A):将字符串A进行逆序显示
- concat(string A,string B,string C......):将字符串按顺序拼接起来
- instr(string A,string B):查找字符串B在字符串A中第一次出现的位置
- substr(string A,start i,int j):在字符串A中,从第i个字符开始截取j个长度的字符
备注:正则表达式的使用这里不做讲解。
-- 判断文本中是否含有字母
title rlike '[a-zA-Z]' 或者 upper(title) rlike '[A-Z]'
-- 判断文本中是否全为字母,1-是,0-否
case when upper(title) rlike '^[a-z]+