请教一下有关 hologres 和 sql 写法的问题

130 天前
 xcccer

背景:在 hologres 中有多条记录分组汇总,其中有一个数组字段( eg:positions )

请问我可以使用什么函数,或者怎么样实现数组合并去重返回呢?

尝试问过 gpt ,gpt 给出的答案为:

SELECT staff_id, array_distinct(array_agg(positions)) AS merged_positions FROM staff_positions GROUP BY staff_id;

但是 holo 并不支持 array_distinct 函数。

自己也写过 sql ,虽然能实现,但是性能很差:

SELECT staff_id, array_agg(DISTINCT element) AS result FROM ( SELECT staff_id, unnest(positions) AS element FROM staff_positions

) AS subquery GROUP BY staff_id;

请教一下各位大佬有没有好的写法能够实现该功能呢?万分感谢~

1401 次点击
所在节点    数据库
5 条回复
lifanxi
130 天前
作为 8 年前写下 Hologres 最初几行代码的人,我惭愧地说:这个题我不会。我去找人问问看。

您也可以从官网找到用户交流钉钉群,进群咨询。或者通过官网工单咨询。
xcccer
130 天前
@lifanxi 感谢大佬回复,我这边也是问了很多人最后才选择发帖求助的。
lifanxi
130 天前
https://help.aliyun.com/zh/hologres/developer-reference/array-functions?spm=a2c4g.11186623.help-menu-search-113622.d_0#bfa4e6a6dd0a2

咨询了一下相关同事,array distinct 从 1.3 版本开始就已经支持了,如上文档所述。是这个函数仍不能满足您的需求还是您的实例版本过低?如果需要升级实例版本,可以通过管控台自助升级,或者开工单联系技术支持。
xcccer
130 天前
@lifanxi 感谢,同时使用 ARRAY_DISTINCT 和 ARRAY_UNION 这两个函数应该是可以满足需求的。下周看能不能说服部门进行版本升级了。 再次感谢大佬回复
xcccer
128 天前
@lifanxi 今天跟阿里 holo 的同学沟通过了,文档中的这两个方法,在数组长度不一样的时候不能使用.... 对于我提出的使用场景,holo 的同学也是给出了我自己写的那条 sql 一样的方案。暂时可能没有很好的办法解决。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1111613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX