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

Simple Log Service:フィールド操作命令

最終更新日:Jan 10, 2026

この Topic では、フィールド操作命令の使用方法について説明し、例を示します。

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 オブジェクトの最初のレイヤーを展開して、複数の結果を生成します。

重要
  • 出力フィールドのデータ型は VARCHAR です。結果フィールドが入力フィールドと同じ名前を持つ場合、値の処理ポリシーについては、「値の保持と上書き」をご参照ください。

  • 時間フィールド __time__ または __time_ns_part__ で操作を実行することはできません。詳細については、「時間フィールド」をご参照ください。

  • この命令は、新しいバージョンでのデータ変換をサポートしています。さまざまな SPL の使用シナリオについては、「一般的なリファレンス」をご参照ください。

構文

| expand-values -path=<path> -limit=<limit> -keep <field> as <output>

パラメーター

パラメーター

タイプ

必須

説明

path

JSONPath

いいえ

フィールドコンテンツ内の JSON パスを指定して、展開する必要があるコンテンツを特定します。

デフォルト値は空で、指定されたフィールドのコンテンツ全体が直接展開されることを意味します。

limit

Integer

いいえ

各生データ入力から展開できるエントリの最大数。値は 1 から 10 までの整数です。デフォルト値は 10 です。

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": [1, 2]}'
      body: '0'
      
      # エントリ 2
      content: '{"body": [1, 2]}'
      body: '{"a": 1, "b": 2}'