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

Simple Log Service:JSON 関数

最終更新日:Aug 23, 2024

このトピックでは、JSON関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。

次の表に、Simple Log ServiceでサポートされているJSON関数を示します。

重要
  • 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 ('') で囲む必要があります。 囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。

  • ログフィールドの値がJSON型で、複数行に展開する必要がある場合は、UNNEST句を使用することを推奨します。 詳細については、「UNNEST句」をご参照ください。

  • 文字列がJSONデータに解析されない場合、nullが返されます。

  • 収集プロセス中にJSONログが切り捨てられた場合、JSON関数を使用してJSONログをクエリおよび分析すると、システムはエラーを返し、クエリおよび分析プロセスを停止します。 エラーをトラブルシューティングするには、クエリ文でtry式を指定してエラーをキャプチャします。 次いで、システムは、クエリおよび分析プロセスを継続することができる。 例: * | select message, try(json_parse(message)) 詳細については、「TRY関数」をご参照ください。

関数

構文

説明

SQLでサポート

SPLでサポート

json_array_contains関数

json_array_contains( xvalue)

JSON配列に指定された値が含まれているかどうかを確認します。

json_array_get関数

json_array_get( x, index)

JSON配列のインデックスに対応する要素を取得します。

×

json_array_length関数

json_array_length( x)

JSON配列の要素数を取得します。

json_extract関数

json_extract( x, json_path)

JSONオブジェクトまたはJSON配列からJSON値のセットを取得します。 JSON値は、配列またはオブジェクト型にすることができます。

json_extract_scalar関数

json_extract_scalar( x, json_path)

JSONオブジェクトまたはJSON配列からスカラー値のセットを取得します。 スカラー値は、文字列、整数、またはブール型にすることができます。 この関数はjson_extract関数に似ています。

json_format関数

json_format( x)

JSONデータを文字列に変換します。

json_parse関数

json_parse( x)

文字列をJSONデータに変換します。

json_size関数

json_size( x, json_path)

JSONオブジェクトまたはJSON配列の要素数を取得します。

json_array_contains関数

json_array_contains関数は、JSON配列に指定された値が含まれているかどうかをチェックします。

構文

json_array_contains(x, value)

パラメーター

パラメーター

説明

x

このパラメーターの値はJSON配列です。

数値。

戻り値のデータ型

ブール型。

[1, 2, 3] JSON配列に2が含まれているかどうかを確認します。

  • クエリ文 (デバッグ)

    * | SELECT json_array_contains('[1, 2, 3]', 2)
  • クエリと分析結果 json_array_contains

json_array_get関数

json_array_get関数は、JSON配列のインデックスに対応する要素を取得します。

構文

json_array_get(x, index)

パラメーター

パラメーター

説明

x

このパラメーターの値はJSON配列です。

インデックス

JSONインデックス。 このパラメータの値は0から始まります。

戻り値のデータ型

varcharタイプ。

["a", [3,9], "c"] JSON配列のインデックス1に対応する要素を取得します。

  • クエリ文 (デバッグ)

    * | SELECT json_array_get('["a", [3, 9], "c"]', 1)
  • クエリと分析結果 json_array_get

json_array_length関数

json_array_length関数は、JSON配列の要素数を取得します。

構文

json_array_length(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はJSON配列です。

戻り値のデータ型

bigint型。

  • 例1: Resultsフィールドの値にあるJSON要素の数を取得します。

    • サンプルフィールド

      Results:[{"EndTime":1626314920},{"FireResult":2}]
    • クエリ文

      * | SELECT json_array_length(Results)
    • クエリと分析結果 json_array_length

  • 例2: timeフィールドの値のJSON要素の数を取得します。

    • サンプルフィールド

      time:["time_local","request_time","upstream_response_time"]
    • クエリ文

      * | SELECT json_array_length(time)
    • クエリと分析結果 json_array_length

json_extract関数

json_extract関数は、JSONオブジェクトまたはJSON配列からJSON値のセットを取得します。 JSON値は、配列またはオブジェクト型にすることができます。

重要

json_extract関数を使用して処理するデータが無効なJSON型である場合、エラーが報告されます。 この場合、json_extract_scalar関数を使用することを推奨します。

構文

json_extract(x, json_path)

パラメーター

パラメーター

説明

x

このパラメーターの値は、JSONオブジェクトまたはJSON配列です。

json_パス

JSONパス。 フォーマット: $.store.book[0].title. 詳細については、「」をご参照ください。json_pathの設定方法を教えてください。

戻り値のデータ型

JSON文字列型。

SQL

ResultsフィールドからEndTimeフィールドの値を取得します。

  • サンプルフィールド

    Results:[{"EndTime":1626314920},{"FireResult":2}]
  • クエリ文

    * | SELECT json_extract(Results, '$.0.EndTime')
  • クエリと分析結果 json_extract

SPL

ResultsフィールドからEndTimeフィールドの値を取得します。

  • サンプルフィールド

Results:[{"EndTime":1626314920},{"FireResult":2}]
  • SPLステートメント

* | extend a = json_extract(Results, '$.0.EndTime')
  • SPLの結果

image.png

json_extract_scalar関数

json_extract_scalar関数は、JSONオブジェクトまたはJSON配列からスカラー値のセットを取得します。 スカラー値は、文字列、整数、またはブール型にすることができます。

構文

json_extract_scalar(x, json_path)

パラメーター

パラメーター

説明

x

このパラメーターの値は、JSONオブジェクトまたはJSON配列です。

json_パス

JSONパス。 フォーマット: $.store.book[0].title. 詳細については、「」をご参照ください。json_pathの設定方法を教えてください。

戻り値のデータ型

varcharタイプ。

SQL

ResultsフィールドからRawResultCountフィールドの値を取得します。 次に、加算のために値をbigint型に変換します。

  • サンプルフィールド

    Results:[{"EndTime":1626314920},{"RawResultCount":1}]
  • クエリ文

    * | SELECT sum(cast(json_extract_scalar(Results,'$.1.RawResultCount') AS bigint) )
  • クエリと分析結果 json_extract_scalar

SPL

ResultsフィールドからRawResultCountフィールドの値を取得します。

  • サンプルフィールド

Results:[{"EndTime":1626314920},{"RawResultCount":1}]
  • SPLステートメント

* | extend a = json_extract_scalar(Results, '$.1.RawResultCount')
  • SPLの結果 image.png

json_format関数

json_format関数は、JSONデータを文字列に変換します。

構文

json_format(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はJSON型です。

戻り値のデータ型

varcharタイプ。

[1,2,3] JSON配列を [1,2,3] 文字列に変換します。

  • クエリ文 (デバッグ)

    * | SELECT json_format(json_parse('[1, 2, 3]'))
  • クエリと分析結果 json_format

json_parse関数

json_parse関数は、文字列のみをJSONデータに変換し、文字列がJSON形式であるかどうかをチェックします。 ほとんどの場合、json_parse関数は重要ではありません。 JSONデータから値を抽出する場合は、json_extract_scalar関数を使用することを推奨します。

構文

json_parse(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は文字列です。

戻り値のデータ型

JSON型。

SQL

  • 例 1

    [1,2,3] 文字列を [1,2,3] JSON配列に変換します。

    • クエリ文 (デバッグ)

       * | SELECT json_parse('[1, 2, 3]')
    • クエリと分析結果 json_format

  • 例 2

    loggingフィールドからサブフィールドを抽出します。

    • サンプルフィールド json_parse

    • クエリ文 (デバッグ)

      * | SELECT map_keys(try_cast(json_parse(logging) AS map(varchar, json)))
    • クエリと分析結果 json_parse

SPL

[1,2,3] 文字列を [1, 2, 3] JSON配列に変換します。

  • SPLステートメント

 * | extend a = json_parse('[1, 2, 3]')
  • SPLの結果

image.png

json_size関数

json_size関数は、JSONオブジェクトまたはJSON配列の要素数を取得します。

構文

json_size(x, json_path)

パラメーター

パラメーター

説明

x

このパラメーターの値は、JSONオブジェクトまたはJSON配列です。

json_パス

JSONパス。 フォーマット: $.store.book[0].title. 詳細については、「」をご参照ください。json_pathの設定方法を教えてください。

戻り値のデータ型

bigint型。

statusフィールドの要素数を取得します。

  • サンプルフィールド

    Results:[{"EndTime":1626314920,"FireResult":2,"RawResults":[{"_col0":"1094"}]}]
  • クエリ文

    * | SELECT json_size(Results, '$.0.RawResults')
  • クエリと分析結果 json_size