在配置单元中过滤

Filtering in hive

我有一个配置单元 table 演示(id bigint,项目字符串),其中数据集是逗号分隔的字符串集,例如

id  dataset 
1   ,2,asd,as,a,1 
2   sda,saa,2,fds 

有没有一种本机方法可以过滤掉非数字字符串并仅保留数字字符串,而不是分解 table、过滤然后分组或编写我自己的 UDF。

id  dataset 
1   2,1 
2   2
select  id
       ,regexp_replace(regexp_replace(dataset,'(?<=^|,)((\d+)|([^,]*))(?=,|$)',''),'^,+|,+$|(,)+','')

from    demo
;

+----+-----+
| id | c1  |
+----+-----+
|  1 | 2,1 |
|  2 | 2   |
+----+-----+

试试这样的正则表达式:

select id
  ,regexp_replace(dataset, '(,[a-zA-Z]+|^,|[a-zA-Z]+,)' , '') as dataset
 from yourdata;

这导致:

id dataset
1 2,1
2 2