

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

# unnest
<a name="CWL_QuerySyntax-Unnest"></a>

 使用 `unnest` 可以对输入列表进行扁平化以生成多条记录，列表中的每个元素都有一条记录。根据字段包含的项目数量，此命令会丢弃当前记录并生成新记录。每条记录都包含 `unnested_field`，它代表一个项目。其他所有字段均来自原始记录。

 `unnest` 的输入是 `LIST`，它来自 `jsonParse` 函数。有关更多信息，请参阅[结构类型](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-structure-types)。任何其他类型（例如，`MAP`、`String` 和 `numbers`）都被视为 `unnest` 中包含一个项目的列表。

**命令结构**  
 以下示例描述了此命令的格式。

```
unnest field into unnested_field
```

**示例查询**  
 以下示例解析了 JSON 对象字符串并展开字段事件列表。

```
fields jsonParse(@message) as json_message 
| unnest json_message.events into event
| display event.name
```

此示例查询的日志事件可能是一个 JSON 字符串，如下所示：

```
{
   "events": [
        {
            "name": "exception"
        },
        {
            "name": "user action"
        }
   ]
}
```

在本例中，示例查询会在查询结果中生成两条记录，一条记录的 `event.name` 为 `exception`，另一条记录的 `event.name` 为 **user action**。

**示例查询**  
 以下示例会对列表进行扁平化，然后筛选出项目。

```
fields jsonParse(@message) as js 
| unnest js.accounts into account 
| filter account.type = "internal"
```

**示例查询**  
 以下示例会对列表进行扁平化以进行聚合。

```
fields jsonParse(trimmedData) as accounts 
| unnest accounts into account 
| stats sum(account.droppedSpans) as n by account.accountId 
| sort n desc 
| limit 10
```