hll_sketch_agg 聚合函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

此函数利用 HyperLogLog 算法来计算给定列中唯一值数量的概率近似值,并将结果输出为一个称为草图缓冲区的二进制表示形式。

这种二进制表示形式适合持久化。

查询可以使用生成的缓冲区通过 hll_sketch_estimate 函数计算近似的唯一计数。

hll_unionhll_union_agg 函数还可以通过使用并合并这些缓冲区作为输入来将草图组合在一起。

实现使用 Apache Datasketches 库。 有关详细信息,请参阅 HLL

语法

hll_sketch_agg ( expr [, lgConfigK ] )

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

参数

  • expr:类型为 INTBIGINTSTRINGBINARY 的表达式,将对其进行唯一计数。
  • lgConfigK:介于 4 和 21 之间(含)的可选 INT 常量,默认值为 12。 K 的以 2 为底的对数,其中 K 是草图的桶数或槽数。

expr 中的任何 NULL 都将被忽略。

返回

包含 HyperLogLog 草图的非 NULLBINARY 缓冲区,它是通过使用并聚合聚合组中的所有输入值计算出的结果。

示例

> SELECT hll_sketch_estimate(hll_sketch_agg(col, 12))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3

> SELECT hll_sketch_estimate(hll_sketch_agg(col))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3