Hive 从现有配置单元表列创建多个列

Hive 从现有配置单元表列创建多个列,hive,bigdata,hiveql,Hive,Bigdata,Hiveql,如何从现有配置单元表创建多个列。示例数据如下所示 我的要求是仅当条件满足时才从现有表创建2个新列。 col1当代码=1时。col2当代码=2时 预期产出: 请帮助了解如何在配置单元查询中实现它?如果将所需的值聚合到数组中,则可以分解并仅过滤具有匹配位置的值 演示: 结果: col1 col2 a b a1 b1 col1 col2 a b a1 b1 如果数组大小不同,这种方法将不起作用 另一种方法-计算row_number和row

如何从现有配置单元表创建多个列。示例数据如下所示

我的要求是仅当条件满足时才从现有表创建2个新列。 col1当代码=1时。col2当代码=2时

预期产出:


请帮助了解如何在配置单元查询中实现它?

如果将所需的值聚合到数组中,则可以分解并仅过滤具有匹配位置的值

演示:

结果:

col1    col2
a       b
a1      b1
col1    col2
a       b
a1      b1
如果数组大小不同,这种方法将不起作用

另一种方法-计算row_number和row_number上的完全联接,如果col1和col2具有不同数量的值(某些值将为null),则此方法有效:

结果:

col1    col2
a       b
a1      b1
col1    col2
a       b
a1      b1

final表在col1和col2之间没有任何关系吗。我的意思是你可以使用这个sql,但是这也会产生空值<代码>从表中选择code=1时的case,然后选择col end作为col1,code=2时的case,然后选择col end作为col2,HI@Koushik Roy,我的案例中的列之间没有关系。这些空值在结果集中的显示方式。还有更好的方法吗?嗨@leftjoin,谢谢你的解决方案。是否可以提供独立查询(方法2),因为您建议将查询与my_表一起使用。@Rajasekhar888使用您的真实表,而不是my_表。只需将my_表从中删除,并用您的表名替换my_表即可