Как замаскировать столбцы в Hive, используя REGEXP_REPLACE? - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь выполнить приведенное ниже требование маскировки полей адреса в 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:

Working Teradata code

Teradata Результат:

Teradata Resultset

Код улья:

Hive code

Ошибка куста:

Hive code error

Может ли это быть достигнуто в HIVE?

...