Hive - 对多个替换条件使用replace或regexp_replace函数

时间:2018-03-13 23:07:09

标签: replace hive regexp-replace

我正在使用Hive并尝试清理可能包含多个不需要的数据的数据。想知道我是否可以在多个条件下使用单个regexp_replace或translate函数。

对于Eg。如果字符串是2000 Helen St - DO NOT USE 我需要替换/修剪- DO NOT USE并将St更改为Street。 输出应为2000 Helen Street

类似地

  • 3000 Cross St应为3000 Cross Street
  • 4000 Mascot Dr应为4000 Mascot Drive
  • 等..

大约有10个或更多这样的清理条件,输入字符串可以满足0或多个条件标准。这些条件可以设置为单个regexp_replace吗?

1 个答案:

答案 0 :(得分:0)

您可以轻松组合模板以删除子字符串或使用OR(|)替换相同的值。在其他情况下,请使用多个regexp_replace:

例如,如果您要删除“测试”'和' - 不要使用'并取代' Dr'与' Street':

hive> select regexp_replace(
                  regexp_replace('TEST 2000 Helen St - DO NOT USE',
                                 '[- ]*DO NOT USE|TEST( *|$)',''),
                          'St([ ]*|$)','Street'  
                  );
OK
2000 Helen Street
Time taken: 0.055 seconds, Fetched: 1 row(s)

删除' TEST'和' - 不要使用' - 这些组合成单个模板。 '圣'取而代之的是' Street' - 这是第二个regexp_replace。 当然这只是一个例子。