

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# parse
<a name="CWL_QuerySyntax-Parse"></a>

を使用して`parse`ログフィールドからデータを抽出し、クエリで処理できる抽出フィールドを作成します。`parse` コマンドは、glob 式、正規表現、logfmt の 3 つのモードをサポートしています。

`fieldName` を省略すると、デフォルトで `@message` が使用されます。フィールド名を最初の引数として指定することで、任意の名前付きフィールドから解析できます。

ログイベントが指定されたパターンと一致しない場合、結果には表示されますが、抽出されたフィールドは表示されません。

## Glob モード
<a name="CWL_QuerySyntax-parse-glob"></a>

抽出する値のプレースホルダーとしてワイルドカード (`*`) を使用し、 で名前付きフィールドに割り当てます`as`。

**[Syntax]** (構文)

```
parse {{fieldName}} "{{pattern}}" as {{alias1}}, {{alias2}}
```

`*` ワイルドカードの数は、エイリアスの数と等しくなければなりません。

**例**

```
parse @message "user=*, method:*, latency := *" as @user,
    @method, @latency | stats avg(@latency) by @method, @user
```

```
parse @logStream "*/*/*/*" as env, service, instance, shard
| stats count(*) by env, service
```

**連鎖解析**

フィールドを抽出し、抽出したフィールドをさらに解析します。

```
parse @message "url=*" as url
| parse url "/api/*/users/*" as apiVersion, userId
| display apiVersion, userId
```

## 正規表現モード
<a name="CWL_QuerySyntax-parse-regex"></a>

フィールドを抽出するには、名前付きキャプチャグループで正規表現を使用します。正規表現の構文の詳細については、「[サポートされている正規表現 (regex) 構文](FilterAndPatternSyntax.md#regex-expressions)」を参照してください。

**[Syntax]** (構文)

```
parse {{fieldName}} /{{regex}}/
```

名前付きキャプチャグループ`(?<{{name}}>...)`を使用して、抽出されたフィールドを定義します。

**例**

**名前付きキャプチャグループを使用してフィールドを抽出する**

```
parse @message /user=(?<user2>.*?), method:(?<method2>.*?),
    latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2,
    @user2
```

**名前付きキャプチャグループを使用して VPC フローログから ENI を抽出する**

```
parse @message /(?<NetworkInterface>eni-.*?) /
| display NetworkInterface, @message
```

## Logfmt モード
<a name="CWL_QuerySyntax-parse-logfmt"></a>

を使用して `parse logfmt` logfmt 形式のログ行をキーと値のペアに解析します。Logfmt は、各行にスペース区切りの`key=value`ペアが含まれる構造化ロギング形式です。

**[Syntax]** (構文)

```
parse {{fieldName}} logfmt as {{alias}}
```

その結果、ドット表記 (、 など`lf.level``lf.msg`) でアクセスするマップが作成されます。

**例**

```
parse @message logfmt as lf
| filter lf.level = "error"
| display lf.msg, lf.duration
```

```
parse @message logfmt as lf
| stats count(*) by lf.host
```