- 类别:
聚合函数 (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_COMBINE( [ DISTINCT ] <state> [ , <max_log_k> ] )
必填实参¶
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;
以下示例执行以下操作:
DATASKETCHES_HLL_ACCUMULATE 函数为
v
列中的数据创建两个二进制草图,按列g
内的值1
和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;
+--------------------------------------------------+
| COMBINED_SKETCHES |
|--------------------------------------------------|
| 0201070C030804002BF2FB06862FF90D81BC5D067B65E608 |
+--------------------------------------------------+
您可以在 DATASKETCHES_HLL_ACCUMULATE 中的示例中看到累积草图的值。