【问题标题】:Need to group struct type into array需要将结构类型分组到数组中
【发布时间】:2014-12-22 19:01:06
【问题描述】:

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

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

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

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

谢谢。

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

【问题讨论】:

  • 请附上您的代码,以便我们更轻松地提供帮助。

标签: arrays struct hive concat collect


【解决方案1】:

这行得通吗?

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

【讨论】:

  • 不幸的是,它对我不起作用。最后我需要:array>。您的查询提供什么数组
  • @maze2002 啊,我现在更清楚你的目标了。我很高兴看到您至少找到了一个临时解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多