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 以下的相對誤差。
下圖顯示相對估計誤差的機率分佈函數,以百分比表示所有支援的精確度設定: