Hive 如何使用REGEXP\u REPLACE屏蔽配置单元中的列?
我正在尝试使用regexp\u replace来实现以下对配置单元中地址字段的屏蔽要求 如果我有一个地址字段,我需要在1,4,8,12..etc(4的倍数)位置保留字符,并将剩余字符替换为“X”,应保留空格 我在Teradata中实现了这一结果,但使用相同的函数和参数与HiveSQL进行了斗争 Teradata代码:Hive 如何使用REGEXP\u REPLACE屏蔽配置单元中的列?,hive,masking,Hive,Masking,我正在尝试使用regexp\u replace来实现以下对配置单元中地址字段的屏蔽要求 如果我有一个地址字段,我需要在1,4,8,12..etc(4的倍数)位置保留字符,并将剩余字符替换为“X”,应保留空格 我在Teradata中实现了这一结果,但使用相同的函数和参数与HiveSQL进行了斗争 Teradata代码: SELECT RegExp_Replace(RegExp_Replace( RegExp_Replace ('CHANGI COURT', '(.)(.)?(.)?(.)?',
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 CXXXT
配置单元代码:
SELECT
RegExp_Replace(RegExp_Replace(
RegExp_Replace
('CHANGI COURT', '(.)(.)?(.)?(.)?', '(\1(\2[\3(\4', 2,0,'c'),'(\([^ ])', 'X', 1,0,'c'),'(\(|\[)', '', 1,0,'c');
蜂巢错误
失败:SemanticException[错误10014]:第1行:37错误的参数“c”:
类org.apache.hadoop.hive.ql.udf.UDFRegExpReplace没有匹配的方法
with(string,string,string,int,int,string)。可能的选择:
FUNC(字符串,字符串,字符串)(状态=42000,代码=10014)
我还附上了Hive和Teradata的代码截图和结果
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结果:
配置单元代码:
配置单元错误:
这能在蜂箱中实现吗?@halfer。。这是正确的teradata代码似乎在teradata中为我提供了所需的输出,但当我在hive中运行相同的代码时,它失败了。。所以我想知道是否有其他方法可以在蜂箱中实现这一点。希望这能澄清…@halfer。。我把所有细节都编辑好了我的问题。。希望它足够。我肯定会确保下次我发布或编辑时遵循论坛的格式规则。。。如果你对是否能在蜂箱中实现这一点有任何想法,请让我知道。。谢谢问题已经解决了,解决方案是什么?你可以把自己的答案作为解决方案,并接受它。这样,对社区也会有帮助。