我有一个包含详细行的表(1行和多行)。出于这个原因,我创建了一个具有结构类型的表,以便减少行并使它们成为1 id 1行。
如何将数据插入到结构类型的impala表中?另外,如何在结构类型的值之后进行聚合?
代替使用struct来存储多个值,您可以使用group_concat(col, separator)
例如,如果一个客户有3个账号,您想将它们存储在一行中,用逗号分隔,您可以使用下面的代码-
select cust_id, name, group_concat(cust_acc,',') as concat_account
from cust_details
group by 1,2
如果数据中有逗号,可以使用pipe。
上述解决方案的另一个好处是,您可以使用split_part(concat_account,',',1)
获得第一个帐号。
现在,如果你的数据非常复杂,你不能使用group concat,你可以使用struct。这有点棘手,因为您必须首先以struct格式准备数据,然后加载它们。请参阅下面的链接-如何插入数组