

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

 `unnest`를 사용하면 입력으로 가져온 목록을 평면화하여 목록의 각 요소에 대해 단일 레코드로 여러 레코드를 생성할 수 있습니다. 필드에 포함된 항목의 수에 따라 이 명령은 현재 레코드를 삭제하고 새 레코드를 생성합니다. 각 레코드에는 항목을 나타내는 `unnested_field`가 포함됩니다. 다른 모든 필드는 원본 레코드에서 가져옵니다.

 `unnest`의 입력값은 `LIST`이며, 이는 `jsonParse` 함수에서 나옵니다. 자세한 내용은 [Structure types](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`을 **사용자 작업**으로 생성합니다.

**예제 쿼리**  
 다음 예제에서는 목록을 평면화한 다음 항목을 필터링합니다.

```
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
```