Share via


hll_merge() (彙總函式)

將整個群組的 HLL 結果合併成單一 HLL 值。

注意

此函式會與 summarize 運算子搭配使用。

如需詳細資訊,請參閱基礎演算法 (HyperLogLog) 和估計精確度

重要

hll () 、hll_if () 和 hll_merge () 的結果可以儲存和更新版本擷取。 例如,您可能想要建立每日唯一使用者摘要,然後可用來計算每周計數。 不過,這些結果的精確二進位表示可能會隨著時間而改變。 不保證這些函式會針對相同的輸入產生相同的結果,因此我們不建議依賴它們。

Syntax

hll_merge(hll)

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
hll string ✔️ 包含要合併之 HLL 值的數據行名稱。

傳回

函式會跨群組傳回 hll 的合併 HLL 值。

提示

使用 dcount_hll 函式,從 hll () hll_merge () 聚合函數計算 dcount

範例

下列範例顯示合併成單一 HLL 值之群組的 HLL 結果。

StormEvents
| summarize hllRes = hll(DamageProperty) by bin(StartTime,10m)
| summarize hllMerged = hll_merge(hllRes)

輸出

結果只會顯示陣列中的前五個結果。

hllMerged
[[1024,14],["-6903255281122589438","-7413697181929588220","-2396604341988936699","5824198135224880646","-6257421034880415225", ...],[]]

估計的正確性

此函式會使用 HyperLogLog (HLL) 演演算法的變體,此演算法會執行設定基數的隨機估計。 此演算法提供 "knob",可用來平衡每個記憶體大小的精確度和執行時間:

精確度 錯誤 (%) 項目計數
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

注意

「項目計數」資料行是 HLL 實作中 1 位元組計數器的數目。

如果設定的基數夠小,此演算法就會包含一些執行最佳計數 (零錯誤) 的條款:

  • 當精確度層級為 1 時,會傳回 1000 個值
  • 當精確度層級為 2 時,會傳回 8000 個值

誤差界限是概率,不是理論上的界限。 值會是誤差分佈的標準差 (sigma),而 99.7% 的估計會有 3 x sigma 以下的相對誤差。

下圖會針對所有支援的精確度設定,說明相對估計誤差的機率分佈函式 (以百分比表示):

顯示 hll 錯誤分佈的圖表。