类别:

聚合函数 (Cardinality Estimation) , 窗口函数的语法和用法

DATASKETCHES_HLL_COMBINE

将(合并)输入草图合并为单个输出草图。

此函数是 HLL HyperLogLog 函数的一个版本,可以读取 Apache DataSketches 使用的格式的二进制草图。有关更多信息,请参阅 Apache DataSketches 文档 (https://datasketches.apache.org/docs/HLL/HllSketches.html)。

此函数允许在同一个表的水平分区上运行 DATASKETCHES_HLL_ACCUMULATE 函数,从而为每个表分区生成算法草图。稍后可以使用此函数来组合这些草图,生成与整个表的 DATASKETCHES_HLL_ACCUMULATE 单次运行相同的输出草图。

另请参阅:

DATASKETCHES_HLL_ACCUMULATE

语法

DATASKETCHES_HLL_COMBINE( [ DISTINCT ]  <state> [ , <max_log_k> ] )
Copy

必填实参

state

一个表达式,其中包含通过调用 DATASKETCHES_HLL_ACCUMULATE 生成的状态信息。

可选实参

max_log_k

该并集中 K 的最大值,以 log2 表示。指定一个介于 4 和 21(含)之间的 INTEGER 值。有关更多信息,请参阅 Apache DataSketches 文档 (https://datasketches.apache.org/docs/HLL/HllSketches.html)。

默认值:12

返回

该函数返回与 Apache Datasketches 库兼容的 BINARY 值。

使用说明

DISTINCT 在语法上受支持,但不起作用。

示例

创建表并插入值:

CREATE OR REPLACE TABLE datasketches_demo(v INT, g INT);

INSERT INTO datasketches_demo SELECT 1, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 2, 1;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 1, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 4, 2;
INSERT INTO datasketches_demo SELECT 5, 2;
Copy

以下示例执行以下操作:

  1. DATASKETCHES_HLL_ACCUMULATE 函数为 v 列中的数据创建两个二进制草图,按列 g 内的值 12 分组。

  2. DATASKETCHES_HLL_COMBINE 函数将这些二进制草图组合起来。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS combined_sketches
  FROM accumulated;
Copy
+--------------------------------------------------+
| COMBINED_SKETCHES                                |
|--------------------------------------------------|
| 0201070C030804002BF2FB06862FF90D81BC5D067B65E608 |
+--------------------------------------------------+

您可以在 DATASKETCHES_HLL_ACCUMULATE 中的示例中看到累积草图的值。

语言: 中文