首页 > 解决方案 > 需要 Hive 等效于 oracle 的 regexp_extract 来提取模式之间的文本

问题描述

我的数据如下所示:

bizunit
nam-bu1-us-credit
nam-bu2-us-debit
latam-bu3-mx-debit

现在我想将nam&提取latam到一个名为 and 的单独列中,并将,region提取到一个名为and的单独列中,并将其提取到一个名为的单独列中。bu1bu2bu3business unitusmxcountry

我会使用什么配置单元函数和 SQL?请分享一个示例 hive SQL 以将上述数据拆分为 3 列以按上述方式提取。

标签: regexhiveextractequivalent

解决方案


CREATE TABLE myTably(
  myText string
  )
INSERT INTO TABLE concat_test VALUES 
  ('nam-bu1-us-credit'), 
  ('nam-bu2-us-debit'), 
  ('latam-bu3-mx-debit');

这是提取地区、业务单位和国家/地区的查询

select 
regexp_extract(myText, '([^-]+)-([^-]+)-([^-]+)-', 1),
regexp_extract(myText, '([^-]+)-([^-]+)-([^-]+)-', 2),
regexp_extract(myText, '([^-]+)-([^-]+)-([^-]+)-', 3) from MyTable

推荐阅读