gpt4 book ai didi

arrays - 梳理hive中表的数据

转载 作者:行者123 更新时间:2023-12-04 22:26:56 26 4
gpt4 key购买 nike

需要将 hive 表中的数据合并为一行。目的是捕获 'N' 以外的数据/值,即应该为所有 'N' 值捕获除 'col1' 以外的任何值

表格1:

col1 col2 col3 col4 col5 col6
-----------------------------
GHY BG Q N N N
GHY BG N T N N
GHY BG N N A N
GHY BG N N N Z

尝试使用以下查询:
Select col1, col2,array(
max(CASE WHEN col3 == 'Q' THEN 'Q' ELSE 'None' END),
max(CASE WHEN col4 == 'T' THEN 'T' ELSE 'None' END),
max(CASE WHEN col5 == 'A' THEN 'A' ELSE 'None' END),
max(CASE WHEN col6 == 'Z' THEN 'Z' ELSE 'None' END))
FROM table1 GROUP BY col1,col2;

并得到以下内容:

实际营业收入:
GHY BG ['None','None','A','None']

预期 O/P:
GHY BG ['Q','T','A','Z']

没有得到错误的点:(

更新_1:

从查询中删除 'max' 后:
FAILED: SemanticException [Error 10025]: Line 2:11 Expression not in GROUP BY key 'Q'

更新_2:
select col1,col2,collect_set(col)
from (select col1,col2,t.col
from tbl
lateral view explode(array(col3,col4,col5,col6)) t as col
where t.col <> 'N'
) t

错误:
FAILED: SemanticException [Error 10025]: Line 1:7 Expression not in GROUP BY key 'col1'

最佳答案

另一种可能的解决方案(受提供的启发)是:

Select col1,col2,array(concat(max(col3),max(col4),max(col5),max(col6)))
group by col1,col2;

笔记:
max() 将选择最大值。因此,您可能需要将不需要的值更改为 'aa' 之类的值。否则可能会选择其他值。

示例 1:
col1 col2 col3 col4 col5 col6
-----------------------------
GHY BG Q N N N
GHY BG N T N N
GHY BG N N A N
GHY BG N N N Z

结果:
['Q','T','N','Z']

示例2:
col1 col2 col3 col4 col5 col6
-----------------------------
GHY BG Q a a a
GHY BG a T a a
GHY BG a a A a
GHY BG a a a Z

结果:
['Q','T','A','Z']

关于arrays - 梳理hive中表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54697954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com