すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:フィールド操作コマンド

最終更新日:Jul 10, 2026

このトピックでは、フィールド操作コマンドの使用方法と例について説明します。

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

はい

展開する元のフィールドの名前です。サポートされている型は VARCHAR です。指定されたフィールドが存在しない場合、展開操作は実行されません。

output

Field

いいえ

展開先のフィールドの名前です。指定されていない場合、デフォルトで結果は入力フィールドに出力されます。

元のフィールドの内容の展開ロジックは次のとおりです:

JSON 配列:配列の各要素を展開します。

JSON 辞書:辞書の各キーと値のペアを展開します。

その他の JSON データ型:初期値を返します。

無効な JSON の場合は、null が返されます。

  • 例 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}'