让决策更智能
新一代智能数据分析平台

Spark SQL文本字符串处理函数及应用

观小远发表于:2021年09月30日 17:15:13更新于:2021年10月11日 19:52:35

1. 基本字符串操作

0016163d1ecc8d74e0859dbea7630e5

2. 字符串查找

0016163d22a546aa93bed1fc12c7768

3. 字符串截取

0016163d241e55f0bc7c3583b9e577d

4. 字符串替换

00161557fe0eb7874b597e642f6f429

5. 字符串分割和拼接

0016163d263255d939073a90e86cb3e


应用案例:
       文本字段“Sprint”,需要分别提取出 ①中间部分“排期”,由数字和字母组成的6至8位字符串;②括号里的内容“测试版本”; ③基于“测试版本”推算出“正式版本”,逻辑:最后一个小数点后数字为小版本号,为0时前面部分即为正式版本号,不为0时中间数字加1。需要实现以下效果。

 0016163d31db42ec30de74e6908d61e

①"排期"实现方式(任选其一):

1. substr([Sprint],8,8)
2. left(replace([Sprint],'GALAXY '),8)
3. regexp_extract([Sprint], '(\\d{4,6}\\w{2})', 1)
4. element_at(flatten(sentences([Sprint])),2)

 

②提取括号里内容“测试版本”实现方式(任选其一):

1. regexp_extract([Sprint], '(\\d\\.\\d{1,2}\\.\\d)', 1)
2. case when instr([Sprint],'(')>0 then replace(substr([Sprint],instr([Sprint],'(')+1),')') end
3. case when [Sprint] like '%(%' then substring_index(translate([Sprint],'()','-'),'-',-1) end
4. element_at(flatten(sentences([Sprint])),3)

 

③基于“测试版本”推算出“正式版本”实现方式:

case when right([测试版本],1)=0 then substring_index([测试版本],'.',2)
else concat(left([测试版本],2),int(substr(substring_index([测试版本],'.',2),3)+1))
end

 

其他字段拆分案例分享:http://help.guandata.com/hc/kb/article/1467947/ 

    您需要登录后才可以回复