我试图从String(composite_key)获取子字符串值: 我的composite_key如下所示:
string1|string2|string3|string4|string5|string6|string7
我可以使用impala的substring方法找到string1,string2,string3,string4和string5
有人可以帮我用substring方法找到String6和String7吗?
任何帮助都会得到帮助。
答案 0 :(得分:1)
您已使用Hive子查询+数组数据结构+拆分功能来完成此任务。但是,这仅适用于Hive。 Impala不支持嵌套数据结构,但Impala 2.3(对应于CDH 5.5)及更高版本的基于镶木地板的表除外。
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
答案 1 :(得分: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