Share via


dcount() (彙總函式)

計算摘要群組中純量表達式所採用相異值的估計值數目。

Null 值會被忽略,且不會納入計算中。

注意

dcount() 彙總函式主要適用於估計大型集合的基數。 它會交易效能的正確性,而且可能會傳回在執行之間變化的結果。 輸入的順序可能會影響其輸出。

注意

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

Syntax

dcount(expr[,accuracy])

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
expr string ✔️ 要計算其相異值的輸入。
精度 int 定義要求估計精確度的值。 預設值是 1。 如需支援的值,請參閱 估計精確度

傳回

傳回群組中 expr 相異值的估計值。

範例

此範例顯示每個狀態中發生多少類型的 Storm 事件。

StormEvents
| summarize DifferentEvents=dcount(EventType) by State
| order by DifferentEvents

顯示的結果數據表只包含前10個數據列。

狀態 DifferentEvents
德克薩斯州 27
加利福尼亞州 26
賓夕法尼亞 25
喬治亞州 24
伊利諾州 23
馬里蘭 23
北卡羅來納州 23
密西根 22
佛羅里達州 22
俄勒岡州 21
堪薩斯州 21
... ...

估計的正確性

此函式會使用 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 錯誤分佈的圖表。