如何使用regexp\u replace掩蔽配置单元中的列?

nhaq1z21  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(378)

我正在尝试使用regexp\u replace实现hive中地址字段屏蔽的以下要求。
如果我有一个地址字段,我需要在1,4,8,12..etc(4的倍数)位置保留字符,并将剩余字符替换为“x”,应该保留空格。
我已经在teradata中实现了这个结果,但是使用相同的函数和参数与hivesql进行了斗争。
teradata代码:

SELECT 
RegExp_Replace(RegExp_Replace(
RegExp_Replace
('CHANGI COURT', '(.)(.)?(.)?(.)?', '(\1(\2[\3(\4', 2,0,'c'),'(\([^ ])', 'X', 1,0,'c'),'(\(|\[)', '', 1,0,'c');

teradata结果按预期工作:
cxxnxx ct型
配置单元代码:

SELECT 
RegExp_Replace(RegExp_Replace(
RegExp_Replace
('CHANGI COURT', '(.)(.)?(.)?(.)?', '(\1(\2[\3(\4', 2,0,'c'),'(\([^ ])', 'X', 1,0,'c'),'(\(|\[)', '', 1,0,'c');

配置单元错误
失败:semanticexception[error 10014]:行1:37错误的参数“c”:类org.apache.hadoop.hive.ql.udf.udfregexpreplace with(string,string,string,int,int,string)没有匹配的方法。可能的选择:func(string,string,string)(状态=42000,代码=10014)
我还附上了hive和teradata的代码截图和结果。
teradata代码:

teradata结果:

配置单元代码:

配置单元错误:

这能在Hive里实现吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题