数据仓库服务 GaussDB(DWS)-聚集函数:approx_count_distinct(col_name)

时间:2025-02-12 15:04:44

approx_count_distinct(col_name)

描述:使用HyperLogLog++ (HLL++) 算法进行基数(某一列去重后的行数)的估算。该函数仅8.3.0及以上集群版本支持。

入参说明:col_name指需要估算基数的列。

可通过GUC参数approx_count_distinct_precision调整误差率。

  • 参数取值范围为[10,20],默认值为17,理论误差率为千分之三。

  • 该参数表示HyperLogLog++ (HLL++)算法中分桶个数,参数越大时,分桶数则越大,理论误差率则越小。
  • 该参数取值越大,相应的计算时间和内存资源开销越大,但依然远小于精确的count distinct语句对应的开销。推荐在估算基数较大时使用该函数替换count distinct。

示例:

 1 2 3 4 5 6 7 8 9101112131415161718
CREATE TABLE employeeinfo (empno smallint, ename varchar(20), job varchar(20), hiredate date,deptno smallint) WITH (ORIENTATION = COLUMN);INSERT INTO employeeinfo VALUES (7155, 'JACK', 'SALESMAN', '2018-12-01', 30);INSERT INTO employeeinfo VALUES (7003, 'TOM', 'FINANCE', '2016-06-15', 20);INSERT INTO employeeinfo VALUES (7357, 'MAX', 'SALESMAN', '2020-10-01', 30);SELECT APPROX_COUNT_DISTINCT(empno) from employeeinfo; approx_count_distinct-----------------------                     3(1 row)SELECT COUNT(DISTINCT empno) FROM employeeinfo GROUP BY ename; count-------     1     1     1(3 rows)
support.huaweicloud.com/sqlreference-910-dws/dws_06_0046.html