

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# dedup
<a name="CWL_QuerySyntax-Dedup"></a>

 使用 `dedup` 根据您指定的字段中的特定值删除重复的结果。您可以将 `dedup` 与一个或多个字段配合使用。如果为一个字段指定 `dedup`，则会仅为该字段的每个唯一值返回一个日志事件。如果指定多个字段，则会为这些字段的每个唯一值组合返回一个日志事件。

重复项会根据排序顺序被丢弃，只保留排序顺序中的第一个结果。我们建议您在 `dedup` 执行命令之前对结果进行排序。如果在运行 `dedup` 之前未对结果进行排序，则会运用使用 `@timestamp` 时的默认降序排序顺序。

在评估中，NULL 值不被视为重复值。任何指定字段的值为 NULL 值的日志事件都将被保留。要消除具有 NULL 值的字段，请运用使用 `isPresent(field)` 函数的 **`filter`**。

在 `dedup` 命令之后可以在查询中使用的唯一查询命令是 `limit`。

当您在查询`dedup`中使用时，控制台会显示一条消息，例如**显示 Y 条记录中的 X**，其中 X 是已删除重复数据的结果数，Y 是重复数据删除前匹配的记录总数。这表示重复的记录已被删除，但并不意味着数据丢失。

 **示例：仅查看名为 `server` 的字段的每个唯一值的最新日志事件** 

 以下示例仅显示 `server` 每个唯一值的最新事件的 `timestamp`、`server`、`severity` 和 `message` 字段。

```
fields @timestamp, server, severity, message 
| sort @timestamp desc 
| dedup server
```

有关 CloudWatch Logs Insights 查询的更多示例，请参阅[常规查询](CWL_QuerySyntax-examples.md#CWL_QuerySyntax-examples-general)。