UNIQ是计算非重复值个数的聚合函数,与COUNT DISTINCT函数类似,本文为您介绍在Hologres如何使用UNIQ函数。
使用限制
仅Hologres V1.3及以上版本支持使用UNIQ函数,如果您的实例是V1.3以下版本,请您使用自助升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。
SQL中必须包含GROUP BY,且GROUP BY的字段比较均匀(不倾斜),UNIQ才能发挥比COUNT DISTINCT更好的性能。
语法
UNIQ
函数用于计算某一列去重后的行数,结果返回一个去重值。
UNIQ ( < column > );
参数说明如下。
参数 | 描述 |
column | 需要计算去重后行数的列。 支持SMALLINT、INTEGER、BIGINT、REAL、DOUBLE PRECISION、TEXT、VARCHAR、TIMESTAMP、TIMESTAMPTZ、DATE、TIMETZ、UUID类型。 |
使用说明如下。
一般来说,UNIQ在GROUP BY KEY的KEY基数较高时,比COUNT DISTINCT性能更好,同时UNIQ比COUNT DISTINCT更节省内存,如果使用COUNT DISTINCT遇到内存超限时,可以换用UNIQ。
从Hologres V2.1版本开始,Hologres针对COUNT DISTINCT场景做了非常多的性能优化(包括单个COUNT DISTINCT、多个COUNT DISTINCT、数据倾斜、SQL没有GROUP BY字段等场景),无需再手动改写成UNIQ实现,即可实现更好的性能。详情请参见Count Distinct优化。
示例
计算ORDERS表的O_CUSTKEY列去重后行的数值语句如下。
SELECT UNIQ ( O_CUSTKEY ) FROM ORDERS;
--不同O_ORDERSTATUS下O_CUSTKEY去重数
SELECT O_ORDERSTATUS, UNIQ ( O_CUSTKEY ) FROM ORDERS GROUP BY O_ORDERSTATUS;
反馈
- 本页导读 (1)
文档反馈