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