开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

关于hologres的数组函数,这里的几个函数不支持常量查询,查询字段写在子查询里也不支持吗?

关于hologres的数组函数bce050369cac985e632e4e1486a62245.png
这里的几个函数不支持常量查询,查询字段写在子查询里也不支持吗?

展开
收起
真的很搞笑 2023-12-01 11:26:51 144 0
3 条回答
写回答
取消 提交回答
  • Hologres的数组函数中,包括array_max、array_min、array_contains、array_except、array_distinct和array_union等都暂不支持常量查询。这意味着在这些函数中,你不能直接使用具体的常量值进行查询,而需要通过变量或者字段值来替代。

    当涉及到查询字段写在子查询里的情况,这其实是Hologres支持的一种常见操作方式。在SELECT语句中,每一个输出列都有一个名称,这个名称在一个简单的SELECT中只是用来标记要显示的列。但如果SELECT是一个大型查询的子查询时,那么这个大型查询会把该名称看做是子查询产生的虚表的列名。然而,要注意的是,虽然子查询在Hologres中是支持的,但并不是所有PostgreSQL支持的子查询函数 Hologres都能支持。因此,在使用子查询时一定要确认所使用的函数是否得到了Hologres的支持。

    2023-12-02 15:41:32
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    Hologres支持数组类型的函数,但是这些函数在某些情况下可能不支持常量查询或子查询。例如:

    1. array_union:这个函数用于合并两个数组,并返回一个新的数组,其中包含所有唯一的元素。如果尝试使用常量作为输入参数,可能会导致错误。

    2. array_maxarray_min:这些函数分别用于找出数组中的最大值和最小值。对于数值型数组,它们可以正常工作;但对于非数值型数组(如字符串),这些函数的适用性可能会受到限制。

    3. array_contains:这个函数用于检查一个数组是否包含特定的元素。它通常需要一个数组列名作为第一个参数,而不是一个常量数组。

    4. array_except:这个函数用于从一个数组中移除另一个数组中存在的元素。同样,它通常要求两个数组都来自表中的列,而不仅仅是常量数组。

    5. array_distinct:这个函数用于删除数组中的重复项。它接受一个数组列名作为参数,而不支持直接传递常量数组。

    2023-12-01 17:02:59
    赞同 展开评论 打赏
  • 应该是array_union这个函数本身在hqe执行,但是被推到了pqe,所以报错了。问题出在 t1.user_list = t1.department_list 这个条件上,判断array是否相等走的是pqe,可以用 t1.user_list @> t1.department_list and t1.user_list <@ t1.department_list 绕过,此回答整理自钉群“实时数仓Hologres交流群”

    2023-12-01 11:54:33
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载