

# CloudWatch 统计数据定义
<a name="Statistics-definitions"></a>

统计数据是指定时间段内的指标数据汇总。当您绘制某个指标的图表或检索其统计数据时，您可以指定时间*段*（例如 5 分钟），用于计算每个统计值。例如，如果**时间段**为 5 分钟，则**总数**是在此五分钟内所收集的所有样本值的总数，而**最小值**是此五分钟内收集的最低值。

CloudWatch 支持指标的以下统计数据。
+ **样本数**是在该时间段内的数据点数。
+ **总数**是在该时间段内收集的所有数据点值的总数。
+ **平均值**是指定时间段内 `Sum/SampleCount` 的值。
+ **最小值**是指定时间段内的最小观察值。
+ **最大值**是指定时间段内的最大观察值。
+ **百分位数 (p)** 表示某个值在数据集中的相对位置。例如，**p95** 指第 95 个百分位数，表示该时间段内 95% 的数据低于此值，5% 的数据高于此值。百分位数可帮助您更好地了解指标数据的分布情况。
+ **切尾均值 (TM)** 是两个指定边界之间的所有值的均值。计算此均值时，两个边界以外的值均被忽略。您可以将边界定义为 0 到 100 之间的一个或两个数字，最多 10 位小数。这些数字可以是绝对值或百分比。例如，**tm90** 计算的是去掉 10% 具有最高值的数据点后的平均值。**TM(2%:98%)** 计算的是去掉 2% 最小数据点和 2% 最大数据点后的平均值。**TM(150:1000)** 计算的是去掉所有小于或等于 150 或大于 1000 的数据点后的平均值。
+ **四分位均值 (IQM)** 是*四分位间距*的切尾均值，或中间 50% 的值。它等同于 **TM(25%:75%)**。
+ **缩尾均值 (WM)** 类似于切尾均值。但是，计算缩尾均值时，不会忽略边界以外的值，而是将它们视为等于相应边界边缘的值。经过此规范化处理之后再计算平均值。您可以将边界定义为 0 到 100 之间的一个或两个数字，最多 10 位小数。例如，**wm98** 将计算平均值，同时将 2% 的最高值视为等于第 98 个百分位数的值。**WM(10%:90%)** 将计算平均值，同时将 10% 的最大数据点视为 90% 的边界值，并将 10% 的最小数据点视为 10% 的边界值。
+ **百分等级 (PR)** 是满足某一固定阈值的值的百分比。例如，**PR(:300)** 返回的是值等于或小于 300 的数据点的百分比。**PR(100:2000)** 返回的是值介于 100 到 2000 之间的数据点的百分比。

  百分位数排名的下限不含本数，上限包含本数。
+ **切尾计数 (TC)** 指所选切尾均值统计数据范围内的数据点数。例如，**tc90** 返回的是不包括处于 10% 最高值区间内的任何数据点的数据点数。**TC(0.005:0.030)** 返回的是值介于 0.005（不含）和 0.030（含）之间的数据点数。

  切尾计数可以返回十进制值而非整数。这是因为它是一个插值近似值，可以得出分数结果。
+ **切尾总数 (TS)** 指所选切尾均值统计数据范围内数据点的值的总数。它等同于（切尾均值）\$1（切尾计数）。例如，**ts90** 返回的是不包括处于 10% 最高值区间内的任何数据点的数据点总数。**TS(80%:)** 返回的是不包括值处于 80% 最低值区间内的任何数据点的值的总数。

**注意**  
对于“切尾均值”、“切尾计数”、“切尾总数”和“缩尾均值”，如果将两个边界定义为固定值而不是百分比，则计算时将包括等于较高边界的值，但不包括等于较低边界的值。

## 语法
<a name="Statistics-syntax"></a>

对于“切尾均值”、“切尾计数”、“切尾总数”和“缩尾均值”，以下语法规则适用：
+ 使用括号和带有百分号的一个或两个数字来定义边界，以用作数据集中位于指定的两个百分位数之间的值。例如，**TM(10%:90%)** 将仅使用位于第 10 和第 90 个百分位数之间的值。**TM(:95%)** 将使用处于数据集最低值区间到第 95 个百分位数之间的值，忽略 5% 具有最高值的数据点。
+ 使用括号和无百分号的一个或两个数字来定义边界，以用作数据集中位于指定的确切值之间的值。例如，**TC(80:500)** 将仅使用介于 80（不含）和 500（含）之间的值。**TC(:0.5)** 将仅使用等于或小于 0.5 的值。
+ 使用一个数字（无括号）以百分比形式来计算，计算过程忽略高于指定百分位数的数据点。例如，**tm99** 将计算均值，同时忽略 1% 具有最高值的数据点。其与 **TM(:99%)** 的计算结果相同。
+ 在指定范围时，切尾均值、切尾计数、切尾总数和缩尾均值均可以使用大写字母缩写表示，例如 **TM(5%:95%)**、**TM(100:200)** 或 **TM(:95%)**。仅指定一个数字时，只能使用小写字母缩写，例如 **tm99**。

## 统计数据使用案例
<a name="Statistics-usecases"></a>
+ **切尾均值**对于样本规模较大的指标（例如网页延迟）最实用。例如，**tm99** 会忽略可能由网络问题或人为错误导致的极高异常值，以便为典型请求的平均延迟提供更准确的数据。同样，**TM(10%:)** 会忽略 10% 的最低延迟值，例如由缓存命中导致的延迟值。此外，**TM(10%:99%)** 将排除这两种类型的异常值。我们建议您使用切尾均值来监测延迟。
+ 每当您使用切尾均值时，最好随时关注切尾计数，以确保在切尾均值计算中使用的值的数量足以具有统计意义。
+ 百分等级使您能够将值归入范围的“条柱”中，而且您可以使用它来手动创建直方图。为此，请将值归入各种不同的条柱，例如 **PR(:1)**、**PR(1:5)**、**PR(5:10)** 和 **PR(10:)**。以条形图的方式可视化呈现其中每个条柱，这样就得到一个直方图。

  百分位数排名的下限不含本数，上限包含本数。

## 百分位数与切尾均值
<a name="Percentile-versus-Trimmed-Mean"></a>

百分位数（如 **p99**）和切尾均值（如 **tm99**）衡量的是相似但并不完全相同的值。**p99** 和 **tm99** 二者都会忽略 1% 具有最高值的数据点，这些数据点被视为异常值。在此之后，**p99** 为剩余 99% 值的**最大值，而 **tm99** 为剩余 99% 的值的*平均值*。如果您正在研究 Web 请求的延迟，**p99** 告诉您的是最糟糕的客户体验，而 **tm99** 告诉您的是平均客户体验，二者都会忽略异常值。

如果您正寻求优化客户体验，那么切尾均值是适用于监测的理想延迟统计数据。

## 对使用百分位数、切尾均值和其他一些统计数据的要求
<a name="Percentiles-trimmedmean-requirements"></a>

CloudWatch 需要原始数据点来计算以下统计数据：
+ 百分位数
+ 切尾均值
+ 四分位均值
+ 缩尾均值
+ 切尾总数
+ 切尾计数
+ 百分等级

如果您不使用原始数据而是改用统计数据集发布数据，只有满足以下条件之一，才能检索此数据的这些类型统计数据：
+ 统计数据集的 SampleCount 值为 1，且最小值、最大值和总和均相等。
+ 最小值和最大值相等，总和等于最小值乘以 SampleCount。

以下 AWS 服务包含支持这些类型统计数据的指标。
+ API Gateway
+ Application Load Balancer
+ Amazon EC2
+ Elastic Load Balancing
+ Kinesis
+ Amazon RDS

此外，当任何指标值为负数时，指标的这些类型统计数据将不可用。