Hive 用于拆分列数据并存储到多个记录的配置单元查询

Hive 用于拆分列数据并存储到多个记录的配置单元查询,hive,hiveql,impala,Hive,Hiveql,Impala,有人可以建议我如何编写包含以下详细信息的配置单元SQL查询吗 输入:(制表符分隔的数据) Name电话地址 abc 123:456:789海得拉巴,班加罗尔,钦奈 xyz 111:222:333德里,孟买,浦那 pqr 321:654:999地址1、地址2、地址3 输出: Name电话地址 abc海得拉巴123 abc 456班加罗尔 abc 789金奈 xyz 111德里 xyz 222孟买 xyz 333浦那 pqr 321增补1 pqr 654增补2 pqr 999增补3 是否有人可以

有人可以建议我如何编写包含以下详细信息的配置单元SQL查询吗

  • 输入:(制表符分隔的数据)

    Name电话地址
    abc 123:456:789海得拉巴,班加罗尔,钦奈
    xyz 111:222:333德里,孟买,浦那
    pqr 321:654:999地址1、地址2、地址3

  • 输出:

    Name电话地址
    abc海得拉巴123
    abc 456班加罗尔
    abc 789金奈
    xyz 111德里
    xyz 222孟买
    xyz 333浦那
    pqr 321增补1
    pqr 654增补2
    pqr 999增补3

是否有人可以帮助我如何拆分列数据并将其作为新记录,而不使用任何默认函数。 提前感谢。

使用,split。由于需要分割列的索引进行匹配,因此需要使用posexplode创建索引,并在将列转换为行时确保它们匹配

select Name, Phone, Address 
from table 
      lateral view posexplode(split(Phone,':')) Phone AS index1, Phone
      lateral view posexplode(split(Address,',')) Address AS index2, Address
where index1=index2;
使用,split。由于需要匹配拆分列的索引,因此需要使用posexplode创建索引,并确保在将列转换为行时它们匹配

select Name, Phone, Address 
from table 
      lateral view posexplode(split(Phone,':')) Phone AS index1, Phone
      lateral view posexplode(split(Address,',')) Address AS index2, Address
where index1=index2;

如果我们不知道用于此的预定义函数。我们可以像下面这样编写自定义逻辑(只有知道分隔符和拆分的#


如果我们不知道预定义的方法,这可能会有帮助。

如果我们不知道用于此的预定义函数。我们可以像下面这样编写自定义逻辑(只有知道分隔符和拆分的#


如果我们不知道预定义的方法,这可能会有所帮助。

此方法可能重复:此方法可能重复: