hll_union_agg 函数

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

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

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

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

语法

hll_union_agg ( expr [, allowDifferentLgConfigK ] )

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

参数

  • expr:包含 BINARY 生成的草图的 表达式。
  • allowDifferentLgConfigK:一个可选的 BOOLEAN常量表达式 ,用于控制是否允许使用不同的 lgConfigK 值合并草图。 默认值为 false。

返回

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

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

如果输入草图具有不同的 值,并且 lgConfigKallowDifferentLgConfigK,Azure Databricks将引发 false

如果 不是有效的 HLL 草图缓冲区,Azure Databricks将引发 expr

常见错误条件

示例

> 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: HLL_UNION_DIFFERENT_LG_K