我正在将SQL与pyspark和hive一起使用,而我对这一切都是新手。我有一个我不知道如何解决的问题。
如果我有一个表“ People”,就像这样:
id | name | other_names
1 | Alice | Sarah;Tom
2 | Bob | Jane;Michael;Ben
3 | Lizzie | John
“ other_names”列中的名称数是可变的。可以是1,2,3,....
我想创建一个查询来获得这个:
id | name
1 | Alice
1 | Sarah
1 | Tom
2 | Bob
2 | Jane
2 | Michael
2 | Ben
3 | Lizzie
3 | John
是否有不太复杂的方法?
非常感谢您,并祝您编码愉快:D
要将csv字符串拆分为行,您可以进行横向连接并使用split()
和explode()
:
select t.id, n.other_name
from mytable t
lateral view explode(split(t.other_names, ';')) n as other_name
如果您还想要主要名称:
select id, name from mytable
union all
select t.id, n.other_name
from mytable t
lateral view explode(split(t.other_names, ';')) n as other_name