我有一个hive表演示(id bigint,items string),其中dataset是一个逗号分隔的字符串集,如
id dataset
1 ,2,asd,as,a,1
2 sda,saa,2,fds
是否有一种原生方式我可以过滤掉非数字字符串,只保留数字字符串而不是爆炸表,过滤然后分组或编写我自己的UDF。
id dataset
1 2,1
2 2
答案 0 :(得分:1)
select id
,regexp_replace(regexp_replace(dataset,'(?<=^|,)((\\d+)|([^,]*))(?=,|$)','$2'),'^,+|,+$|(,)+','$1')
from demo
;
+----+-----+
| id | c1 |
+----+-----+
| 1 | 2,1 |
| 2 | 2 |
+----+-----+
答案 1 :(得分:0)
尝试这样的正则表达式:
select id
,regexp_replace(dataset, '(,[a-zA-Z]+|^,|[a-zA-Z]+,)' , '') as dataset
from yourdata;
这导致:
id dataset
1 2,1
2 2