このトピックでは、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( x、value) | JSON配列に指定された値が含まれているかどうかを確認します。 | √ | √ | |
json_array_get( x, index) | JSON配列のインデックスに対応する要素を取得します。 | √ | × | |
json_array_length( x) | JSON配列の要素数を取得します。 | √ | √ | |
json_extract( x, json_path) | JSONオブジェクトまたはJSON配列からJSON値のセットを取得します。 JSON値は、配列またはオブジェクト型にすることができます。 | √ | √ | |
json_extract_scalar( x, json_path) | JSONオブジェクトまたはJSON配列からスカラー値のセットを取得します。 スカラー値は、文字列、整数、またはブール型にすることができます。 この関数はjson_extract関数に似ています。 | √ | √ | |
json_format( x) | JSONデータを文字列に変換します。 | √ | √ | |
json_parse( x) | 文字列をJSONデータに変換します。 | √ | √ | |
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_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_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)
クエリと分析結果
例2: timeフィールドの値のJSON要素の数を取得します。
サンプルフィールド
time:["time_local","request_time","upstream_response_time"]
クエリ文
* | SELECT json_array_length(time)
クエリと分析結果
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')
クエリと分析結果
SPL
Results
フィールドからEndTime
フィールドの値を取得します。
サンプルフィールド
Results:[{"EndTime":1626314920},{"FireResult":2}]
SPLステートメント
* | extend a = json_extract(Results, '$.0.EndTime')
SPLの結果
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) )
クエリと分析結果
SPL
Results
フィールドからRawResultCount
フィールドの値を取得します。
サンプルフィールド
Results:[{"EndTime":1626314920},{"RawResultCount":1}]
SPLステートメント
* | extend a = json_extract_scalar(Results, '$.1.RawResultCount')
SPLの結果
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_parse関数
json_parse関数は、文字列のみをJSONデータに変換し、文字列がJSON形式であるかどうかをチェックします。 ほとんどの場合、json_parse関数は重要ではありません。 JSONデータから値を抽出する場合は、json_extract_scalar関数を使用することを推奨します。
構文
json_parse(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は文字列です。 |
戻り値のデータ型
JSON型。
例
SQL
SPL
[1,2,3]
文字列を [1, 2, 3]
JSON配列に変換します。
SPLステートメント
* | extend a = json_parse('[1, 2, 3]')
SPLの結果
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')
クエリと分析結果