HLL_COUNT_INIT函数用于将相同类型的值聚合为一个新的HLL++数据结构(sketch)。
注意事项
HLL_COUNT_EXTRACT/HLL_COUNT_MERGE/HLL_COUNT_MERGE_PARTIAL函数使用的BINARY数据需要来源于HLL_COUNT_INIT函数, 不能来源于其他系统或者其他方式。
命令格式
BINARY HLL_COUNT_INIT(<col_name> [, BIGINT <precision>])参数说明
col_name:必填。表的列名称,支持BIGINT、DECIMAL、STRING或BINARY类型。
precision: 可选。估计的精度,取值范围为[10,24],默认值是15。BIGINT类型。 取值越高,估计的精度越高,但存储sketch所占用的空间也相应变大。
返回值说明
返回BINARY类型的HLL++ sketch。如果输入col_name为NULL,则返回NULL。
如果需要合并sketches,可结合HLL_COUNT_MERGE或HLL_COUNT_MERGE_PARTIAL使用
如果需要得到不同值的个数,可以结合HLL_COUNT_EXTRACT使用。
使用示例
以下查询创建了 HLL++ sketches,这些sketches用于计算每个国家开过发票的自然人数量。
SELECT
country,
HLL_COUNT_INIT(customer_id, 10) 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;返回结果:
+---------+------------+
| country | hll_sketch |
+---------+------------+
| BR | =02=01=0A=00=01=00=00=00=20s=8E=00 |
| CZ | =02=01=0A=00=01=00=00=00=98_$=03 |
| UA | =02=01=0A=00=02=00=00=00=F0=8B=DD=00=98_$=03 |
+---------+------------+相关函数
HLL_COUNT_INIT函数属于HyperLogLog++函数,MaxCompute支持一系列近似聚合的HyperLogLog++函数,更多相关函数请参见HyperLogLog++函数。
该文章对您有帮助吗?