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

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

重要
  • 分析で使用したいIf弦文、必要を同封弦単一引用マーク (') 。 囲まれていない文字列または二重引用符 ("") で囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
  • ログフィールドの値がJSON型で、複数行に展開する必要がある場合は、UNNEST句を使用することを推奨します。 詳細については、「UNNEST 関数」をご参照ください。
  • 文字列がJSONデータに解析されない場合、nullが返されます。
  • 収集プロセス中にJSONログが切り捨てられた場合、JSON関数を使用してJSONログをクエリおよび分析すると、システムはエラーを返し、クエリおよび分析プロセスを停止します。 エラーをトラブルシューティングするには、クエリ文でtry式を指定してエラーをキャプチャします。 次いで、システムは、クエリおよび分析プロセスを継続することができる。 例: * | select message, try(json_parse(message)) 詳細については、「TRY関数」をご参照ください。
機能構文説明
json_array_contains関数json_array_contains( x)JSON配列に指定された値が含まれているかどうかを確認します。
json_array_get関数json_array_get( xインデックス)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 (json_pathx)JSONオブジェクトまたはJSON配列からスカラー値のセットを取得します。 スカラー値は、文字列、整数、またはブール型にすることができます。 この関数はjson_extract関数に似ています。
json_format関数json_format(x)JSONデータを文字列に変換します。
json_parse機能json_parse(x)文字列をJSONデータに変換します。
json_size関数json_size (json_pathx)JSONオブジェクトまたはJSON配列の要素数を取得します。

json_array_contains関数

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

構文

json_array_contains( x)

パラメーター

項目説明
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インデックス)

パラメーター

項目説明
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要素の数を取得します。
    • サンプルフィールド
      結果:[{"EndTime":1626314920 },{ "FireResult":2}]
    • クエリ文
      * | SELECT json_array_length (結果)
    • クエリおよび分析の結果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 (json_pathx)

パラメーター

項目説明
xこのパラメーターの値は、JSONオブジェクトまたはJSON配列です。
json_パスJSONパス。 フォーマット: $.store.book[0].title. 詳細については、「json_pathの設定方法」をご参照ください。

戻り値のデータ型

JSON文字列型。

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

  • サンプルフィールド
    結果:[{"EndTime":1626314920 },{ "FireResult":2}]
  • クエリ文
    * | SELECT json_extract (結果, '$.0.EndTime')
  • クエリおよび分析の結果json_extract

json_extract_scalar関数

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

構文

json_extract_scalar (json_pathx)

パラメーター

項目説明
xこのパラメーターの値は、JSONオブジェクトまたはJSON配列です。
json_パスJSONパス。 フォーマット: $.store.book[0].title. Forより情報、参照HowはI json_path設定?

戻り値のデータ型

varcharタイプ。

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

  • サンプルフィールド
    結果:[{"EndTime":1626314920 },{ "RawResultCount":1}]
  • クエリ文
    * | SELECT sum(cast(json_extract_scalar(Results,'$.0.RawResultCount')) AS bigint)
  • クエリおよび分析の結果json_extract_scalar

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型。

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

  • クエリ文
     * | SELECT json_parse('[1, 2, 3]')
  • クエリおよび分析の結果json_format

json_size関数

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

構文

json_size (json_pathx)

パラメーター

項目説明
xこのパラメーターの値は、JSONオブジェクトまたはJSON配列です。
json_パスJSONパス。 フォーマット: $.store.book[0].title. 詳細については、「json_pathの設定方法」をご参照ください。

戻り値のデータ型

bigint型。

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

  • サンプルフィールド
    結果:[{"EndTime":1626314920,"FireResult":2,"RawResults":[{"_col0":"1094"}]}]
  • クエリ文
    * | SELECT json_size (結果、'$.0.RawResults)
  • クエリおよび分析の結果json_size