dcount() (彙總函式)
計算摘要群組中純量運算式所採用相異值的估計值數目。
注意
dcount()
彙總函式主要適用於估計大型集合的基數。 它會交易效能的正確性,而且可能會傳回在執行之間變化的結果。 輸入的順序可能會影響其輸出。
注意
此函式會與 summarize 運算子搭配使用。
Syntax
dcount
(
expr[ ,
accuracy])
參數
名稱 | 類型 | 必要 | 描述 |
---|---|---|---|
expr | 字串 | ✓ | 要計算其相異值的輸入。 |
精度 | 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 以下的相對誤差。
下圖會針對所有支援的精確度設定,說明相對估計誤差的機率分佈函式 (以百分比表示):