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

请教一下Hologres,这是什么原因?

请教一下Hologres,这是什么原因?SELECT
*
FROM
tags_dev.dwd_user_basic_tag
WHERE
ds = '${ds}'
and is_logoff = false
and id IN (
SELECT
regexp_split_to_table(rb_to_array_string(tag_value, ','), ',')::int AS id
FROM
tags_dev.dwd_user_mapping_tag
WHERE
tag_id = 231
AND ds = '2024-03-21'
)
traceId:82770433-6a06-4c2c-8aeb-1fda48227ff4;
errMsg:数据源执行SQL失败:INTERNAL: java.lang.RuntimeException: SQL execute error by datasource... org.postgresql.util.PSQLException: ERROR: function rb_to_array_string(public.roaringbitmap, unknown) does not exist 建议:No function matches the given name and argument types. You might need to add explicit type casts. 位置:194 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2532) org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2267) org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:312) org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448) org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369)

展开
收起
真的很搞笑 2024-03-27 20:44:00 62 0
4 条回答
写回答
取消 提交回答
  • 根据您提供的错误信息,问题出在查询语句中的函数rb_to_array_string(public.roaringbitmap, unknown)不存在。这个函数能是您自函数或者来自某个扩展库,但在当前的数据库中找不到对应的实现。

    建议您检查以下几点:

    1. 确保您的数据库中已经安装了相应的扩展库,例如pg_roaringbitmap。如果没有安装,请先安装该扩展库。

    2. 检查您的查询语句中是否正确引用了该函数。如果函数名或参数类型有误,请修改为正确的名称和类型。

    3. 如果函数确实存在,但仍然出现错误,可能是因为函数的定义与当前数据库的版本不兼容。在这种情况下,您可能需要更新函数定义以适应当前数据库版本。

    希望这些建议能帮助您解决问题。

    2024-03-31 08:22:01
    赞同 展开评论 打赏
  • 这个错误是因为在Hologres中没有名为rb_to_array_string的函数。根据错误信息,建议可能需要添加显式类型转换。

    要解决这个问题,您可以尝试使用其他方法将tag_value转换为数组,然后使用ANY操作符进行比较。以下是一个可能的解决方案:

    SELECT
    *
    FROM
    tags_dev.dwd_user_basic_tag
    WHERE
    ds = '${ds}'
    and is_logoff = false
    and id IN (
    SELECT
    CAST(regexp_split_to_table(tag_value, ',') AS int) AS id
    FROM
    tags_dev.dwd_user_mapping_tag
    WHERE
    tag_id = 231
    AND ds = '2024-03-21'
    )
    

    这里,我们使用了CAST函数将regexp_split_to_table的结果转换为整数类型。这样,查询应该可以正常执行。

    2024-03-30 22:04:05
    赞同 展开评论 打赏
  • 根据您提供的错误信息,问题出在查询语句中的函数调用上。具体来说,错误提示显示rb_to_array_string(public.roaringbitmap, unknown)这个函数不存在。

    根据错误信息的建议,您可能需要添加显式类型转换来解决这个问题。在这种情况下,您可以尝试将public.roaringbitmap转换为适当的数据类型,以便与rb_to_array_string函数兼容。

    以下是一个可能的解决方案示例:

    SELECT
      *
    FROM
      tags_dev.dwd_user_basic_tag
    WHERE
      ds = '${ds}'
      AND is_logoff = false
      AND id IN (
        SELECT
          regexp_split_to_table(rb_to_array_string(CAST(tag_value AS text), ','), ',')::int AS id
        FROM
          tags_dev.dwd_user_mapping_tag
        WHERE
          tag_id = 231
          AND ds = '2024-03-21'
      )
    

    请注意,这只是一个示例解决方案,具体的解决方法可能因您的数据模型和需求而异。您需要根据实际情况进行调整和测试。

    2024-03-28 17:54:15
    赞同 展开评论 打赏
  • 我理解HoloWeb能执行,引擎侧没问题了,是不是连接的时候指定了schema。extension通常是建在pg_catalog或者public下,如果指定了其他schema,有可能会找不到函数 ,此回答整理自钉群“实时数仓Hologres交流群”

    2024-03-28 09:44:53
    赞同 展开评论 打赏

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载