Я пытаюсь выполнить приведенное ниже требование маскировки полей адреса в Hive с помощью regexp_replace.
Если у меня есть поле адреса, мне нужно сохранить символы в 1,4,8,12 ..etc (кратно 4) поместите и замените оставшиеся символы как 'X', пробелы должны быть сохранены.
Я достиг результата в Teradata, но борюсь с Hive SQL, используя те же функцию и аргументы.
Код 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 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(строка, строка, строка, int, int, строка).Возможные варианты: FUNC (строка, строка, строка) (состояние = 42000, код = 10014)
Я приложил скриншоты кода и результаты для Hive и Teradataа также.
Код Teradata:
Teradata Результат:
Код улья:
Ошибка куста:
Может ли это быть достигнуто в HIVE?