Arrays 需要将结构类型分组到数组中

Arrays 需要将结构类型分组到数组中,arrays,struct,hive,concat,collect,Arrays,Struct,Hive,Concat,Collect,我有一个带有列结构的配置单元表。我需要运行一个查询来将该列的一些行收集到数组中 最终结果应该是struct的数组 我尝试过“collect_set”,但它给了我一个错误,即它不能用于复杂类型。我需要一些类似于mysql中的“group_concat” 你有什么想法,我如何实现这一点(最好不使用任何udf/udaf) 谢谢 更新: 我有一个使用UDAF的临时解决方案。但是我想知道是否可以使用内置函数。这是否有效 SELECT collect_set(column_containing_struct

我有一个带有列结构的配置单元表。我需要运行一个查询来将该列的一些行收集到数组中

最终结果应该是struct的数组

我尝试过“collect_set”,但它给了我一个错误,即它不能用于复杂类型。我需要一些类似于mysql中的“group_concat”

你有什么想法,我如何实现这一点(最好不使用任何udf/udaf)

谢谢

更新: 我有一个使用UDAF的临时解决方案。但是我想知道是否可以使用内置函数。

这是否有效

SELECT collect_set(column_containing_struct.struct_field_name) FROM your_table;
-- Or some variant of this
这需要考虑以下几点:

  • 您的表包含一个名为“column_containing_struct”的列,该列包含一个struct
  • 该列中的结构包含一个名为“struct\u field\u name”的字段
  • 您试图做的是生成一个数组,其中包含结构的该字段中出现的所有唯一值

如果您不想进行重复数据消除,并且希望看到其中出现的所有内容,请使用
收集列表

请包含您的代码,以便我们可以更轻松地提供帮助。不幸的是,它对我不起作用。最后我需要:数组。您的查询提供了什么array@maze2002啊,我现在更明白你的目标了。我很高兴看到你至少找到了一个暂时的解决办法。