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++函數。