-1

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

最终结果应该是 struct<....> 的数组

我试过“collect_set”,但它给了我一个错误,它不能用于复杂类型。我需要某种“group_concat”,就像在 mySSQL 中一样。

你有什么想法,我怎么能做到这一点(最好不使用任何udf/udaf)?

谢谢。

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

4

1 回答 1

0

这行得通吗?

SELECT collect_set(column_containing_struct.struct_field_name) FROM your_table;
-- Or some variant of this

这假设了一些事情:

  • 您的表包含一个名为“column_ contains_struct”的列,其中包含一个结构。
  • 该列中的结构包含一个名为“struct_field_name”的字段。
  • 您要做的是生成一个数组,该数组包含结构的该字段中出现的所有唯一值。

如果您不尝试进行重复数据删除,并且您想要那里出现的所有内容,请collect_list改用。

于 2014-12-22T19:11:13.397 回答