2016-04-04 27 views
1

我想從一個字符串(composite_key)子串值: 我composite_key看起來如下面提及的一樣:查找子串在HIVE

string1|string2|string3|string4|string5|string6|string7 

我能找到字符串1,字符串,STRING3,串,4和string5使用子串方法impala

有人可以幫我找到String6和String7使用子串方法嗎?

任何幫助將被appericiated。

+0

請張貼你正在做的一些示例代碼 – Jared

回答

0

我可以用下面的查詢做到這一點:

對於String7

select substring(composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key,locate('|',composite_key, locate('|',composite_key) + 1)+1)+1)+1)+1)+1)as a 

對於String6

select 
substring(composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)+1, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)+1) 
- locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key, 
locate('|',composite_key) + 1)+1)+1)+1)-1) 
as a 
1

你必須使用蜂巢子查詢+陣列+拆分函數來完成這個。但是,這隻適用於Hive。 Impala不支持嵌套數據結構,但Impala 2.3(對應於CDH 5.5)及更高版本中的基於parquet的表除外。

select 
key_array[0] part0, 
key_array[1] part1, 
key_array[2] part2, 
key_array[3] part3, 
key_array[4] part4, 
key_array[5] part5, 
key_array[6] part6, 
from (
select split(composite_key,'|') as key_array 
from mytable 
) as temp