unnest
Se debe utilizar unnest para aplanar una lista tomada como entrada y generar varios registros con un único registro para cada elemento de la lista. En función de la cantidad de elementos que contenga un campo, este comando descarta el registro actual y genera nuevos registros. Cada registro incluye el unnested_field, que representa un elemento. Todos los demás campos provienen del registro original.
La entrada para unnest es LIST, que proviene de la función jsonParse. Para obtener más información, consulte Tipos de estructura. Cualquier otro tipo, como MAP, String y numbers, se trata como una lista con un elemento en unnest.
Estructura de comandos
En el ejemplo siguiente, se describe el formato de este comando.
unnest field into unnested_field
Consulta de ejemplo
En el siguiente ejemplo, se analiza una cadena de objeto JSON y se amplía una lista de eventos de campo.
fields jsonParse(@message) as json_message | unnest json_message.events into event | display event.name
El evento de registro de esta consulta de ejemplo podría ser una cadena JSON de la siguiente manera:
{ "events": [ { "name": "exception" }, { "name": "user action" } ] }
En este caso, la consulta de ejemplo genera dos registros en el resultado de la consulta, uno con event.name como exception y otro con event.name como acción del usuario
Consulta de ejemplo
En el siguiente ejemplo, se aplana una lista y, a continuación, se filtran los elementos.
fields jsonParse(@message) as js | unnest js.accounts into account | filter account.type = "internal"
Consulta de ejemplo
En el siguiente ejemplo, se aplana una lista para su agregación.
fields jsonParse(trimmedData) as accounts | unnest accounts into account | stats sum(account.droppedSpans) as n by account.accountId | sort n desc | limit 10