unnest - Amazon CloudWatch Logs

unnest

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

unnest의 입력값은 LIST이며, 이는 jsonParse 함수에서 나옵니다. 자세한 내용은 Structure types을 참조하세요. MAP, Stringnumbers와 같은 다른 모든 유형은 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.nameexception로, 다른 하나는 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