dcount()(聚合函数)
计算汇总组中标量表达式所采用的不同值的估计数目。
Null 值将被忽略,不会纳入计算。
注意
dcount()
聚合函数主要用于估算大型集的基数。 它以准确性确定性能,并可能在执行间返回不同的结果。 输入的顺序可能会影响其输出。
注意
此函数与 summarize 运算符结合使用。
语法
dcount
(
expr[,
accuracy])
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
expr | string |
✔️ | 要对其不同值进行计数的输入。 |
accuracy | int |
定义了所请求的估计准确度的值。 默认值是 1 。 有关支持的值,请参阅估计准确度。 |
返回
返回组中 expr 的不同值数的估计值。
示例
此示例显示了在每个州有多少种类型的风暴事件发生。
StormEvents
| summarize DifferentEvents=dcount(EventType) by State
| order by DifferentEvents
显示的结果表仅包括前 10 行。
状态 | DifferentEvents |
---|---|
德克萨斯 | 27 |
CALIFORNIA | 26 |
宾夕法尼亚州 | 25 |
佐治亚州 | 24 |
ILLINOIS | 23 |
MARYLAND | 23 |
NORTH CAROLINA | 23 |
密歇根州 | 22 |
佛罗里达州 | 22 |
OREGON | 21 |
KANSAS | 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。
下图显示所有受支持的准确度设置的相对估计误差的概率分布函数,以百分比为单位: