类别:

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

DATASKETCHES_HLL_ESTIMATE

返回给定草图的基数估计值。

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

DATASKETCHES_HLL_COMBINE 函数生成的草图可用于使用 DATASKETCHES_HLL_ESTIMATE 函数计算基数估计值。

语法

DATASKETCHES_HLL_ESTIMATE( <binary_sketch> )
Copy

实参

binary_sketch

包含二进制格式草图信息的表达式。

返回

该函数返回 DOUBLE 类型的值。

如果输入为空,则输出为 0.0

备注

此函数返回的值与 HLL_ESTIMATE 函数的类型不同,后者返回一个 INTEGER 值。

示例

创建表并插入值:

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_ESTIMATE 函数返回每张累积草图的基数估计值。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g)
SELECT g, DATASKETCHES_HLL_ESTIMATE(accumulated_sketches) AS accumulated_estimate
  FROM accumulated;
Copy
+---+----------------------+
| G | ACCUMULATED_ESTIMATE |
|---+----------------------|
| 1 |          2.000000005 |
| 2 |          3.000000015 |
+---+----------------------+

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

返回组合二进制草图的基数估计值

以下示例执行以下操作:

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

  2. DATASKETCHES_HLL_COMBINE 函数将这些二进制草图组合起来,使其统一。

  3. DATASKETCHES_HLL_ESTIMATE 函数返回统一草图的基数估计值。

WITH
  accumulated AS (
    SELECT g,
           DATASKETCHES_HLL_ACCUMULATE(v) AS accumulated_sketches
      FROM datasketches_demo
      GROUP BY g),
  combined AS (
    SELECT DATASKETCHES_HLL_COMBINE(accumulated_sketches) AS unified
      FROM accumulated)
SELECT DATASKETCHES_HLL_ESTIMATE(unified) AS unified_estimate
  FROM combined;
Copy
+------------------+
| UNIFIED_ESTIMATE |
|------------------|
|       4.00000003 |
+------------------+

您可以在 DATASKETCHES_HLL_COMBINE 中的示例中看到组合草图的值。

语言: 中文