HLL_COUNT_MERGE

HLL_COUNT_MERGE函数用于接收一个或多个HLL++数据结构(sketch)输入,将存储类型相同的HLL++ sketch合并为一个新的sketch,并返回合并后sketch的基数估算值。

注意事项

HLL_COUNT_EXTRACT/HLL_COUNT_MERGE/HLL_COUNT_MERGE_PARTIAL函数使用的BINARY数据需要来源于HLL_COUNT_INIT函数, 不能来源于其他系统或者其他方式。

命令格式

BIGINT HLL_COUNT_MERGE(BINARY <sketch>)

参数说明

sketch:必填,BINARY类型。HLL++ sketch,由HLL_COUNT_INIT函数生成。

  • 如果sketchNULL,则被忽略。

  • 每个sketch必须在相同类型上初始化,尝试合并不同类型的sketches会导致错误。例如,无法将从BIGINT数据生成的sketches与从STRING数据生成的sketches合并。

返回值说明

返回BIGINT类型的基数估计值。若合并之后新生成的sketchNULL,函数将返回0。

使用示例

统计所有国家中至少有一张发票的自然人数量。

SELECT HLL_COUNT_MERGE(hll_sketch) AS distinct_customers_with_open_invoice
FROM
  (
    SELECT country, HLL_COUNT_INIT(customer_id) AS hll_sketch
    FROM values
      ('UA', 'customer_id_1', 'invoice_id_11'),
      ('BR', 'customer_id_3', 'invoice_id_31'),
      ('CZ', 'customer_id_2', 'invoice_id_22'),
      ('CZ', 'customer_id_2', 'invoice_id_23'),
      ('BR', 'customer_id_3', 'invoice_id_31'),
      ('UA', 'customer_id_2', 'invoice_id_24')
    t(country, customer_id, invoice_id)
    GROUP BY country
  );

返回结果:

+--------------------------------------+
| distinct_customers_with_open_invoice |
+--------------------------------------+
| 3                                    |
+--------------------------------------+

相关函数

HLL_COUNT_MERGE函数属于HyperLogLog++函数,MaxCompute支持一系列近似聚合的HyperLogLog++函数,更多相关函数请参见HyperLogLog++函数