使用正则表达式的hive查询

时间:2014-07-15 15:34:35

标签: hadoop hiveql

您好我正在寻找一种查询配置单元表的方法(user_acc_detl) 列(ACC_DETAILS)数据如下所示,

COUNTRY[0]_united staes~DATE[0]_6/10/2014~AMOUNT[0]_200~ID[0]_20140509065052159324~COUNTRY[1]_united kingdom~DATE[1]_6/17/2014~AMOUNT[1]_125~ID[1]_20140516075156389761~COUNTRY[2]_Canada~DATE[2]_6/26/2014~AMOUNT[2]_200~ID[2]_20140515094013444121~COUNTRY[3]_Mexico~DATE[3]_7/3/2014~AMOUNT[3]_1200~ID[3]_20140601000937914898

我可以通过

查询配置单元表
select ACC_DETAILS["COUNTRY[0]"] as COUNTRY, ACC_DETAILS["DATE[0]"] as DATE,  ACC_DETAILS["AMOUNT[0]"] as BILLAMOUNT, ACC_DETAILS["ID[0]"] as PAYMENTID
from user_acc_detl

上面的查询给出了country [0],date [0],amount [0],id [0]的数据,这很好。

问题 - 所有我需要使用国家,日期,金额来查询它...而不指定国家[0] ......

问题 - 是否有正则表达式方式来相应地修改查询。请帮帮我。

1 个答案:

答案 0 :(得分:0)

实现此目的的一种简单方法是将查询包装在视图中:

CREATE VIEW user_acc_detl_simple AS
SELECT ACC_DETAILS["COUNTRY[0]"] as COUNTRY
     , ACC_DETAILS["DATE[0]"] as DATE
     , ACC_DETAILS["AMOUNT[0]"] as BILLAMOUNT
     , ACC_DETAILS["ID[0]"] as PAYMENTID
FROM user_acc_detl;

SELECT country, date, billamount, paymentid FROM user_acc_detl_simple;