unnest - Amazon CloudWatch Logs
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

unnest

Use unnest to flatten a list taken as input to produce multiple records with a single record for each element in the list. Based on the number of items a field contains, this command discards the current record and generates new records. Each record includes the unnested_field, which represents an item. All other fields come from the original record.

The input for unnest is LIST, which comes from the jsonParse function. For more information, see Structure types. Any other types, such as MAP, String and numbers, are treated as a list with one item in unnest.

Command structure

The following example describes the format of this command.

unnest field into unnested_field
Example query

The following example parses a JSON object string and expands a list of field events.

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

The log event for this example query could be a JSON string as follows:

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

In this case, the sample query produces two records in the query result, one with event.name as exception and another with event.name as user action

Example query

The following example flattens a list and then filters out items.

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

The following example flattens a list for aggregation.

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