类别:

聚合函数 (基数估算)、 窗口函数

HLL

使用 HyperLogLog 返回输入的非重复基数的近似值(即 HLL(col1, col2, ... ) 返回 COUNT(DISTINCT col1, col2, ... ) 的近似值)。

有关 HyperLogLog 的更多信息,请参阅 估计非重复值的数量

别名:

APPROX_COUNT_DISTINCT

另请参阅:

HLL_ACCUMULATEHLL_COMBINEHLL_ESTIMATE

语法

聚合函数

HLL( [ DISTINCT ] <expr1> [ , ... ] )

HLL(*)
Copy

窗口函数

HLL( [ DISTINCT ] <expr1> [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )

HLL(*) OVER ( [ PARTITION BY <expr2> ] )
Copy

实参

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 |
+----------+-------------------+--------------------------+--------+
Copy
语言: 中文