共用方式為


dcount () (聚合函數)

適用於:✅Microsoft網狀架構Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel

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

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

注意

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

注意

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

語法

dcount(expr[, 精確度])

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
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) 演算法變體,它會對集合基數執行隨機估計。 此演算法提供「旋鈕」,可用來平衡每個記憶體大小的正確性和運行時間:

準確率 錯誤 ≤ 項目計數
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 錯誤分佈的圖表。