我的问题是如何通过字符串中的指示来获取配置单元中的子字符串。我的列值格式如下:
/Country/State/City/Suburb/Street
在这里我只需要去乡下。我喜欢split,它返回一个由“/”分隔的字符串数组。以及substr(字符串a,int begin),它从指定的begin返回一个子字符串。在split中,我需要再次访问一个数组,其中第一个元素是所需的元素,但我只想知道是否有其他更简单的方法来获取国家。谢谢
wz3gfoph1#
我试着用正则表达式来提取 Country . 使用正则表达式配置单元查询是:
Country
select regexp_extract(column,'\/(.*)/.*/.*/.*/',1) from substring_tbl;
我的create table语句:
create external table substring_tbl( column string) LOCATION '/user/root/hive_substring/';
您的输入数据:
用于提取所需数据的查询和正则表达式:
输出:
信息: regexp_extract() 返回使用模式提取的字符串。更多关于 regexp_extract() 在配置单元语言手册+自定义项上提供但是,如果您将输入数据更改为不同的形式,那么您也必须更改正则表达式。更新1查询使用 split() 函数提取所需数据。
regexp_extract()
split()
select split(column, '\\/')[1] from substring_tbl;
1条答案
按热度按时间wz3gfoph1#
我试着用正则表达式来提取
Country
. 使用正则表达式配置单元查询是:我的create table语句:
您的输入数据:
用于提取所需数据的查询和正则表达式:
输出:
信息:
regexp_extract()
返回使用模式提取的字符串。更多关于regexp_extract()
在配置单元语言手册+自定义项上提供但是,如果您将输入数据更改为不同的形式,那么您也必须更改正则表达式。
更新1
查询使用
split()
函数提取所需数据。