approx_count_distinct 聚合函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回组内 expr 中的预估非重复值数。

该实现使用 HyperLogLog++ (HLL++) 算法的密集版本,这是一种先进的基数估算算法。

结果在 5% 的默认值内是准确的,该值派生自最大相对标准偏差的值,不过可以使用 relativeSD 参数配置该值,如下所述。

语法

approx_count_distinct(expr[, relativeSD]) [FILTER ( WHERE cond ) ]

还可以使用 OVER 子句将此函数作为窗口函数调用。

参数

  • expr:可以是定义了等效性的任何类型。
  • relativeSD:定义允许的最大相对标准偏差。
  • cond:一个可选的布尔表达式,可筛选用于聚合的行。

返回

一个 BIGINT。

示例

> SELECT approx_count_distinct(col1) FROM VALUES (1), (1), (2), (2), (3) tab(col1);
 3
> SELECT approx_count_distinct(col1) FILTER(WHERE col2 = 10)
    FROM VALUES (1, 10), (1, 10), (2, 10), (2, 10), (3, 10), (1, 12) AS tab(col1, col2);
 3