ネスト解除
unnest を使用し、入力として取得されたリストをフラット化し、リスト内の各要素に対して 1 つのレコードを持つ複数のレコードを生成します。フィールドに含まれる項目の数に基づいて、このコマンドは現在のレコードを破棄し、新しいレコードを生成します。各レコードには、項目を表す unnested_field が含まれます。他のすべてのフィールドは元のレコードから取得されます。
unnest の入力は LIST で、jsonParse 関数から取得されます。詳細については、「構造型」を参照してください。MAP、String、numbers などの他のタイプは、unnest に 1 つの項目を含むリストとして扱われます。
コマンド構造
以下の例はこのコマンドの形式を説明しています。
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" } ] }
この場合、サンプルクエリはクエリ結果に 2 つのレコードを生成します。1 つは exception として event.name を使用し、もう 1 つはユーザーアクションとして 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