V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xcccer
V2EX  ›  数据库

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

  •  
  •   xcccer · 4 天前 · 725 次点击

    背景:在 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;

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

    5 条回复    2025-02-17 18:55:59 +08:00
    lifanxi
        1
    lifanxi  
       4 天前 via Android
    作为 8 年前写下 Hologres 最初几行代码的人,我惭愧地说:这个题我不会。我去找人问问看。

    您也可以从官网找到用户交流钉钉群,进群咨询。或者通过官网工单咨询。
    xcccer
        2
    xcccer  
    OP
       4 天前
    @lifanxi 感谢大佬回复,我这边也是问了很多人最后才选择发帖求助的。
    lifanxi
        3
    lifanxi  
       4 天前 via Android
    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
        4
    xcccer  
    OP
       4 天前
    @lifanxi 感谢,同时使用 ARRAY_DISTINCT 和 ARRAY_UNION 这两个函数应该是可以满足需求的。下周看能不能说服部门进行版本升级了。 再次感谢大佬回复
    xcccer
        5
    xcccer  
    OP
       2 天前
    @lifanxi 今天跟阿里 holo 的同学沟通过了,文档中的这两个方法,在数组长度不一样的时候不能使用.... 对于我提出的使用场景,holo 的同学也是给出了我自己写的那条 sql 一样的方案。暂时可能没有很好的办法解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1148 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.