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。

下图显示所有受支持的准确度设置的相对估计误差的概率分布函数,以百分比为单位:

Graph showing the hll error distribution.