hll_union_agg 函数

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

此函数利用 HyperLogLog 算法将一组草图合并为一个草图。

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

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

语法

hll_union_agg ( expr [, allowDifferentLgConfigK ] )

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

参数

  • expr:包含 hll_sketch_agg 生成的草图的 BINARY 表达式。
  • allowDifferentLgConfigK:可选的 BOOLEAN 常数表达式,控制是否允许合并具有不同 lgConfigK 值的草图。 默认值为 false。

返回

一个 BINARY 缓冲区,其中包含通过组合同一个组的输入表达式计算出的 HyperLogLog 草图。

allowDifferentLgConfigK 参数为 true 时,结果草图将使用提供的两个 lgConfigK 值中较小的一个。

示例

> SELECT hll_sketch_estimate(hll_union_agg(sketch, true))
    FROM (SELECT hll_sketch_agg(col) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 20) as sketch
            FROM VALUES (1) AS tab(col));
  1

> SELECT hll_sketch_estimate(hll_union_agg(sketch, false))
    FROM (SELECT hll_sketch_agg(col) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 20) as sketch
            FROM VALUES (1) AS tab(col));
  error