Bigquery SQL嵌套regex_replace简化



目前正在使用大量的regex_replace函数规范化BQ中的地址列,每个函数都有一个唯一的匹配和替换值。例子;

regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace
(regexp_replace(regexp_replace(regexp_replace(regexp_replace(UPPER(address),
"STREET", "ST"),
"ROAD", "RD"),
...

有更简单的方法吗?

您可以使用UDF来清理您的查询:

Create temp function replace_me(s string,a1 string,a2 string,b1 string,b2 string,c1 string,c2 string) as 
(replace(replace(replace(s,a1,a2),b1,b2),c1,c2));
select replace_me(replace_me(upper("Road 5, Street 7"),"ROAD","RD","STREET","ST","",""),"","","","","","")

如果您只需要缩写单词,可以使用正则表达式:

SELECT 
REGEXP_REPLACE("ROAD 7, STREET 5, NEW YORK", CONCAT(r'(?i)(RO)AD|(ST)REET|(N)EW (Y)ORK'), r'1234')

最新更新