unnest
Use unnest para nivelar uma lista usada como entrada para gerar vários registros com um único registro para cada elemento na lista. Com base no número de itens que um campo contém, esse comando descarta o registro atual e gera novos registros. Cada registro inclui o unnested_field, que representa um item. Todos os outros campos vêm do registro original.
A entrada para unnest é LIST, que vem da função jsonParse. Para obter mais informações, consulte Tipos de estrutura. Quaisquer outros tipos, como MAP, String e numbers, são tratados como uma lista com um item no unnest.
Estrutura do comando
O exemplo a seguir descreve o formato desse comando.
unnest field into unnested_field
Consulta de exemplo
O exemplo a seguir analisa uma string de objeto JSON e expande uma lista de eventos de campo.
fields jsonParse(@message) as json_message | unnest json_message.events into event | display event.name
O evento de logs para essa consulta de exemplo pode ser uma string JSON da seguinte forma:
{ "events": [ { "name": "exception" }, { "name": "user action" } ] }
Nesse caso, a consulta de amostra produz dois registros no resultado da consulta, um com event.name como exception e outro com event.name como ação do usuário.
Consulta de exemplo
O exemplo a seguir nivela uma lista e depois filtra os itens.
fields jsonParse(@message) as js | unnest js.accounts into account | filter account.type = "internal"
Consulta de exemplo
O exemplo a seguir nivela uma lista para agregação.
fields jsonParse(trimmedData) as accounts | unnest accounts into account | stats sum(account.droppedSpans) as n by account.accountId | sort n desc | limit 10