收集集合函数:COLLECT_SET

collect_set([distinct] expr)

功能描述

collect_set 函数用于从输入的一组数据中收集并返回一个不重复的元素集合。该函数可以确保返回的数组中不包含重复的元素,从而使得结果更加简洁明了。当指定 distinct 关键字时,函数会对结果进行去重处理,但请注意,即使不指定 distinctcollect_set 函数也会进行去重操作,因此 distinct 关键字在此场景下并不影响结果。

参数说明

  • expr: 可以是任意数据类型的表达式。

返回结果

  • 返回一个数组(array),数组中的元素类型与输入参数类型相同。
  • 即使使用 distinct 关键字,也不会影响去重的结果。
  • 返回的数组元素顺序不保证与输入顺序相同。
  • 输入的 null 值不会包含在结果数组中。

使用示例

示例 1:基本使用

SELECT collect_set(col) FROM VALUES (1), (2), (1), (null) AS tab(col);
+------------------+
| collect_set(col) |
+------------------+
| [2,1]            |
+------------------+

示例 2:去重操作

SELECT collect_set(distinct col) FROM VALUES ("a"), ("b"), (null), ("c"), ("a") AS tab(col);
+---------------------------+
| collect_set(DISTINCT col) |
+---------------------------+
| ["c","b","a"]             |
+---------------------------+

注意事项

  • 当处理大量数据时,请注意 collect_set 函数可能会消耗较多的内存资源。
  • 由于返回的数组元素顺序不保证与输入顺序相同,若需要排序,请使用其他函数如 ARRAY_SORT 对结果进行排序处理。

联系我们
预约咨询
微信咨询
电话咨询