HLL¶
使用 HyperLogLog 返回输入的非重复基数的近似值(即 HLL(col1, col2, ... )
返回 COUNT(DISTINCT col1, col2, ... )
的近似值)。
有关 HyperLogLog 的更多信息,请参阅 估计非重复值的数量。
语法¶
聚合函数
HLL( [ DISTINCT ] <expr1> [ , ... ] )
HLL(*)
窗口函数
HLL( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )
HLL(*) OVER ( [ PARTITION BY <expr2> ] )
实参¶
expr1
这是用于了解非重复值数的表达式。
expr2
这是可选表达式,用于将行分组到分区。
返回¶
返回值的数据类型是 INTEGER。
使用说明¶
DISTINCT
可以作为实参包含在内,但不起作用。有关 NULL 值和聚合函数的信息,请参阅 聚合函数和 NULL 值。
用作窗口函数时:
此函数不支持:
OVER() 子句中的 ORDER BY 分子句。
窗口框架。
示例¶
此示例展示如何使用 HLL 及其别名 APPROX_COUNT_DISTINCT。此示例同时调用 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 | +----------+-------------------+--------------------------+--------+