dcountif() (彙總函式)
針對述詞評估true
為的數據列,估計expr相異值的數目。
Null 值會被忽略,且不會納入計算中。
注意
此函式會與 summarize 運算子搭配使用。
Syntax
dcountif
(
expr, 述詞, [,
精確度])
深入瞭解 語法慣例。
參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
expr | string |
✔️ | 用於匯總計算的表達式。 |
predicate | string |
✔️ | 用來篩選數據列的表達式。 |
精度 | int |
速度與精確度之間的控制。 如果未指定,則預設值為 1 。 如需支援的值,請參閱 估計精確度 。 |
傳回
針對述詞評估true
為的數據列,傳回expr相異值的估計值。
提示
dcountif()
如果所有數據列或沒有任何數據列傳遞 Predicate
表達式,可能會傳回錯誤。
範例
此範例顯示每個狀態中發生多少類型的嚴重 Storm 事件。
StormEvents
| summarize DifferentFatalEvents=dcountif(EventType,(DeathsDirect + DeathsIndirect)>0) by State
| where DifferentFatalEvents > 0
| order by DifferentFatalEvents
顯示的結果數據表只包含前10個數據列。
狀態 | DifferentFatalEvents |
---|---|
加利福尼亞州 | 12 |
德克薩斯州 | 12 |
奧克拉何馬州 | 10 |
伊利諾州 | 9 |
堪薩斯州 | 9 |
紐約 | 9 |
紐澤西州 | 7 |
WASHINGTON | 7 |
密西根 | 7 |
密蘇里州 | 7 |
... | ... |
估計的正確性
此函式會使用 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 以下的相對誤差。
下圖會針對所有支援的精確度設定,說明相對估計誤差的機率分佈函式 (以百分比表示):
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應