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

Hologres查询链接数的时候,用group by usename,这是为啥呢?

Hologres查询链接数的时候,用group by usename,查询每个用户的暂用链接数,发现不支持group by 语法。这是为啥呢?
ERROR: ORCA failed to produce a plan : PlStmt Translation: Group by key is type of imprecise not supported

展开
收起
真的很搞笑 2024-01-23 15:12:36 65 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个错误是因为Hologres不支持在GROUP BY子句中使用usename作为分组键。你可以尝试使用其他方法来计算每个用户的暂用链接数,例如使用子查询或者窗口函数。

    2024-01-23 22:06:56
    赞同 展开评论 打赏
  • select usename::text,count(DISTINCT pid) as cnt from pg_stat_activity where backend_type = 'client backend' and state = 'idle'
    group by usename::text order by cnt desc; ,此回答整理自钉群“实时数仓Hologres交流群”

    2024-01-23 19:25:09
    赞同 展开评论 打赏
  • "ERROR: ORCA failed to produce a plan : PlStmt Translation: Group by key is type of imprecise not supported"错误,说明在执行GROUP BY语句时,Hologres的ORCA优化器无法处理某个列为非精确类型作为分组键的情况。

    在Hologres中,"imprecise"通常指的是那些无法精准比较的类型,比如数组、JSONB、复合类型或者是某种未经过显式转换的非精确日期时间类型等。GROUP BY语句要求列能够进行精确比较以正确分组数据。

    为了解决这个问题,请检查你的查询语句,确保GROUP BY子句中使用的列是精确类型,如整数、浮点数、字符串或精确日期时间类型等。如果列原本是非精确类型,可能需要通过转换函数将其转换为精确类型后再进行分组,例如:

    SELECT username, COUNT(*) as connection_count
    FROM your_table
    WHERE /* your conditions */
    GROUP BY CAST(username AS VARCHAR);
    

    请根据实际情况替换上述查询中的username列和转换函数,确保username列能够正确地被转换为可用于GROUP BY操作的精确类型。

    2024-01-23 15:43:46
    赞同 展开评论 打赏

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

相关产品

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

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