

# 如何处理部分数据


## 如何评估 Metrics Insights 查询的部分数据


如果用于告警的 Metrics Insights 查询匹配的指标超过 10,000 个，则根据该查询找到的前 10,000 个指标评估告警。这意味着根据部分数据评估告警。

您可以使用以下方法来确定 Metrics Insights 告警目前是否正在根据部分数据评估其告警状态：
+ 在控制台中，如果您选择一个告警来查看 **Details**（详细信息）页面，则该页面上会显示 **Evaluation warning: Not evaluating all data**（评估警告：未评估所有数据）消息。
+ 当您使用 [describe-alarms](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/describe-alarms.html?highlight=describe%20alarms) Amazon CLI 命令或 [DescribeAlarms](https://docs.amazonaws.cn/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html) API 时，您会在 `EvaluationState` 字段中看到值 `PARTIAL_DATA`。

当 Amazon EventBridge 进入部分数据状态时，告警还会将事件发布到 Amazon EventBridge，这样您就可以创建 EventBridge 规则来监视这些事件。在这些事件中，`evaluationState` 字段的值为 `PARTIAL_DATA`。示例如下：

```
{
    "version": "0",
    "id": "12345678-3bf9-6a09-dc46-12345EXAMPLE",
    "detail-type": "CloudWatch Alarm State Change",
    "source": "aws.cloudwatch",
    "account": "123456789012",
    "time": "2022-11-08T11:26:05Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:cloudwatch:us-east-1:123456789012:alarm:my-alarm-name"
    ],
    "detail": {
        "alarmName": "my-alarm-name",
        "state": {
            "value": "ALARM",
            "reason": "Threshold Crossed: 3 out of the last 3 datapoints [20000.0 (08/11/22 11:25:00), 20000.0 (08/11/22 11:24:00), 20000.0 (08/11/22 11:23:00)] were greater than the threshold (0.0) (minimum 1 datapoint for OK -> ALARM transition).",
            "reasonData": "{\"version\":\"1.0\",\"queryDate\":\"2022-11-08T11:26:05.399+0000\",\"startDate\":\"2022-11-08T11:23:00.000+0000\",\"period\":60,\"recentDatapoints\":[20000.0,20000.0,20000.0],\"threshold\":0.0,\"evaluatedDatapoints\":[{\"timestamp\":\"2022-11-08T11:25:00.000+0000\",\"value\":20000.0}]}",
            "timestamp": "2022-11-08T11:26:05.401+0000",
            "evaluationState": "PARTIAL_DATA"
        },
        "previousState": {
            "value": "INSUFFICIENT_DATA",
            "reason": "Unchecked: Initial alarm creation",
            "timestamp": "2022-11-08T11:25:51.227+0000"
        },
        "configuration": {
            "metrics": [
                {
                    "id": "m2",
                    "expression": "SELECT SUM(PartialDataTestMetric) FROM partial_data_test",
                    "returnData": true,
                    "period": 60
                }
            ]
        }
    }
}
```

如果告警查询包含的 GROUP BY 语句最初返回 500 个以上的时间序列，则将根据该查询找到的前 500 个时间序列对告警进行评估。但是，如果您使用的是 ORDER BY 子句，则将对该查询找到的所有时间序列进行排序，并根据您的 ORDER BY 子句，将具有最高值或最低值的前 500 个时间序列用于评估告警。

## 如何评估来自多数据来源告警的部分数据


如果 Lambda 函数返回部分数据：
+ 继续根据返回的数据点来对警报进行评估。
+ 您可以使用以下方法来确定 Lambda 函数目前是否正在根据部分数据评估其警报状态：
  + 在控制台中，选择警报，然后选择**详细信息**页面。如果该页面上显示**评估警告：未评估所有数据**，则表示正在对部分数据进行评估。
  + 如果您在使用 `describe-alarms` Amazon CLI 命令或 DescribeAlarms API 时在 `EvaluationState` 字段中看到值 `PARTIAL_DATA`，则表示正在对部分数据进行评估。
+ 警报在进入部分数据状态时，其还会将事件发布到 Amazon EventBridge。