このトピックでは、フィールド操作コマンドの使用方法と例について説明します。
project
このコマンドは、指定されたパターンに一致するフィールドを保持し、指定されたフィールドの名前を変更します。実行時には、すべてのフィールド保持式が最初に実行され、その後に名前変更式が実行されます。
デフォルトの時刻フィールド __time__ と __time_ns_part__ は予約されており、名前の変更や上書きはできません。詳細については、「時刻フィールド」をご参照ください。
構文
| project -wildcard <field-pattern>, <output>=<field>, ...
パラメーター
|
パラメーター |
データ型 |
必須 |
説明 |
|
wildcard |
Bool |
いいえ |
ワイルドカードパターンマッチングを有効にするかどうかを指定します。デフォルトでは完全一致のフィールドマッチングが使用されます。このパラメーターを追加すると、ワイルドカードパターンマッチングが有効になります。 |
|
field-pattern |
FieldPattern |
はい |
保持するフィールドの名前、またはフィールド名とワイルドカード文字の組み合わせで、一致するすべてのフィールドを処理します。 |
|
output |
Field |
はい |
フィールドの新しい名前です。複数のフィールドを同じターゲットフィールドに名前変更することはできません。 重要
新しいフィールドが入力データ内のフィールドと同じ名前の場合、値の割り当てに関するポリシーについては「新旧値の保持と上書き」をご参照ください。 |
|
field |
Field |
はい |
名前を変更するフィールドの元の名前です。
|
例
-
例 1:特定のフィールドを保持します。
* | project level, err_msg -
例 2:フィールド名を変更し、指定したフィールドのみを保持します。
* | project log_level=level, err_msg -
例 3:
__tag__:*と完全一致するフィールドを保持します。* | project "__tag__:*"
project-away
このコマンドは、指定されたパターンに一致するフィールドを削除し、他のすべてのフィールドを保持します。
このコマンドは、デフォルトで時刻フィールド __time__ と __time_ns_part__ を保持します。詳細については、「時刻フィールド」をご参照ください。
構文
| project-away -wildcard <field-pattern>, ...
パラメーター
|
パラメーター |
データ型 |
必須 |
説明 |
|
wildcard |
Bool |
いいえ |
ワイルドカードパターンマッチングを有効にするかどうかを指定します。デフォルトでは完全一致のフィールドマッチングが使用されます。このパラメーターを追加すると、ワイルドカードパターンマッチングが有効になります。 |
|
field-pattern |
FieldPattern |
はい |
削除するフィールドの名前、またはフィールド名とワイルドカード文字の組み合わせで、一致するすべてのフィールドを処理します。 |
project-rename
このコマンドは、指定されたフィールドの名前を変更し、他のすべてのフィールドを保持します。
デフォルトの時刻フィールド __time__ と __time_ns_part__ は予約されており、名前の変更や上書きはできません。詳細については、「時刻フィールド」をご参照ください。
構文
| project-rename <output>=<field>, ...
パラメーター
|
パラメーター |
データ型 |
必須 |
説明 |
|
output |
Field |
はい |
フィールドの新しい名前です。複数のフィールドを同じターゲットフィールドに名前変更することはできません。 重要
新しいフィールドが入力データ内のフィールドと同じ名前の場合、値の割り当てに関するポリシーについては「新旧値の保持と上書き」をご参照ください。 |
|
field |
Field |
はい |
名前を変更するフィールドの元の名前です。
|
例
指定されたフィールドの名前を変更します。
* | project-rename log_level=level, log_err_msg=err_msg
expand-values
このコマンドは、指定されたフィールド内の JSON オブジェクトの第 1 階層を展開して、複数の結果を生成します。
-
出力フィールドのデータ型は VARCHAR です。結果フィールドが入力フィールドと同じ名前の場合、値の処理ポリシーについては「新旧値の保持と上書き」をご参照ください。
-
時間フィールド
__time__または__time_ns_part__に対して操作を実行することはできません。詳細については、「時間フィールド」をご参照ください。 -
このコマンドは、新バージョンのデータ変換をサポートしています。さまざまな SPL 使用シナリオについては、「一般リファレンス」をご参照ください。
構文
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
パラメーター
|
パラメーター |
データ型 |
必須 |
説明 |
|
path |
JSONPath |
いいえ |
フィールドの内容内の JSON パスを指定して、展開が必要なコンテンツを特定します。 デフォルト値は空です。この場合、指定されたフィールドの内容全体が直接展開されます。 |
|
limit |
Integer |
いいえ |
各生データエントリから展開される最大エントリ数です。有効な値:0 および 1 ~ 10。デフォルト値:10。 説明
単一フィールドの展開値の累積サイズは 50 MB を超えることはできません。limit が 1 ~ 10 に設定されている場合、展開される行数はこの値によって制限されます。 説明
limit が 0 に設定されている場合、フィールドごとに展開される行数に制限はありません。ただし、すべてのフィールドと行にわたって返される合計データは約 50 MB に制限されます。この上限を超えた場合、すでに処理された部分的な結果のみが返されます。個々のフィールド値は切り捨てられません。 説明
上限を超える原因となった値も結果に含まれるため、実際に返されるデータは 50 MB をわずかに超える場合があります。上限による切り捨ては通知されず、エラーや警告は生成されません。 |
|
keep |
Bool |
いいえ |
展開後に元のフィールドを保持するかどうかを指定します。デフォルトでは、元のフィールドは保持されません。このパラメーターを追加すると、元のフィールドが保持されます。 |
|
field |
Field |
はい |
展開する元のフィールドの名前です。サポートされている型は |
|
output |
Field |
いいえ |
展開先のフィールドの名前です。指定されていない場合、デフォルトで結果は入力フィールドに出力されます。 元のフィールドの内容の展開ロジックは次のとおりです: JSON 配列:配列の各要素を展開します。 JSON 辞書:辞書の各キーと値のペアを展開します。 その他の JSON データ型:初期値を返します。 無効な JSON の場合は、 |
例
-
例 1:配列を展開して複数の結果を出力します。
-
SPL 文
* | expand-values y -
入力データ
x: 'abc' y: '[0,1,2]' -
出力データ
# エントリ 1 x: 'abc' y: '0' # エントリ 2 x: 'abc' y: '1' # エントリ 3 x: 'abc' y: '2'
-
-
例 2:辞書を展開して複数の結果を出力します。
-
SPL 文
* | expand-values y -
入力データ
x: 'abc' y: '{"a": 1, "b": 2}' -
出力データ
# エントリ 1 x: 'abc' y: '{"a": 1}' # エントリ 2 x: 'abc' y: '{"b": 2}'
-
-
例 3:指定された JSON パスの内容を展開し、新しいフィールドに出力します。
-
SPL 文
* | expand-values -path='$.body' -keep content as body -
入力データ
content: '{"body": [0, {"a": 1, "b": 2}]}' -
出力データ
# エントリ 1 content: '{"body": [0, {"a": 1, "b": 2}]}' body: '0' # エントリ 2 content: '{"body": [0, {"a": 1, "b": 2}]}' body: '{"a": 1, "b": 2}'
-