- 类别:
/sql-reference/functions-aggregation`(基数估算)、:doc:/sql-reference/functions-analytic`
APPROX_COUNT_DISTINCT¶
使用 HyperLogLog 返回输入的非重复基数的近似值(即 HLL(col1, col2, ... )
返回 COUNT(DISTINCT col1, col2, ... )
的近似值)。
有关 HyperLogLog 的更多信息,请参阅 估计非重复值的数量。
- 别名:
HLL。
- 另请参阅:
语法¶
聚合函数
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] )
APPROX_COUNT_DISTINCT(*)
窗口函数
APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )
APPROX_COUNT_DISTINCT(*) OVER ( [ PARTITION BY <expr2> ] )
实参¶
expr1
这是用于了解非重复值数的表达式。
expr2
这是可选表达式,用于将行分组到分区。
返回¶
返回值的数据类型是 INTEGER。
使用说明¶
虽然计算是近似值,但它是确定性的。当使用相同的输入数据调用此函数时,此函数返回相同的结果。
有关 NULL 值和聚合函数的信息,请参阅 聚合函数和 NULL 值。
用作窗口函数时:
此函数不支持:
OVER() 子句中的 ORDER BY 分子句。
窗口框架。
示例¶
此示例展示如何使用 APPROX_COUNT_DISTINCT 及其别名 HLL。此示例同时调用 COUNT(DISTINCT i)
和 APPROX_COUNT_DISTINCT(i)
函数,强调这两个函数的结果并不总是完全匹配。
以下查询的确切输出可能会有所不同,因为 APPROX_COUNT_DISTINCT() 返回近似值,而不是精确值。
SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i) FROM sequence_demo; +----------+-------------------+--------------------------+--------+ | COUNT(I) | COUNT(DISTINCT I) | APPROX_COUNT_DISTINCT(I) | HLL(I) | |----------+-------------------+--------------------------+--------| | 1024 | 1024 | 1007 | 1007 | +----------+-------------------+--------------------------+--------+