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

Simple Log Service:JSON 関数

最終更新日:Nov 09, 2025

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

Simple Log Service は、次の JSON 関数をサポートしています。

重要
  • Simple Log Service のクエリ文では、文字列を単一引用符 (') で囲む必要があります。単一引用符で囲まれていない文字、または二重引用符 ("") で囲まれている文字は、フィールド名または列名として扱われます。たとえば、'status' は文字列 'status' を表しますが、status または "status" は 'status' という名前のログフィールドを表します。

  • ログフィールドの値が JSON フォーマットであり、それを複数の行に展開する必要がある場合は、UNNEST 構文を使用します。詳細については、「UNNEST 句」をご参照ください。

  • 文字列を JSON として解析できない場合、関数は null を返します。

  • JSON ログが収集中に切り捨てられた場合、JSON 関数を使用するとエラーが発生し、クエリが中止されます。このエラーを処理するには、TRY 式を使用して例外をキャッチします。これにより、クエリを続行できます。たとえば、* | select message, try(json_parse(message)) です。詳細については、「TRY 式」をご参照ください。

関数名

構文

説明

SQL サポート

SPL サポート

json_array_contains 関数

json_array_contains(x, value)

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_extract_scalar 関数

json_extract_scalar(x, json_path)

JSON オブジェクトまたは JSON 配列から、文字列、整数、ブール値などのスカラー値のセットを抽出します。この関数は json_extract 関数に似ています。

json_extract_bool 関数

json_extract_bool(x, json_path)

JSON オブジェクトまたは JSON 配列からブール値を抽出します。

×

json_extract_long 関数

json_extract_long(x, json_path)

JSON オブジェクトまたは JSON 配列から bigint 値を抽出します。

×

json_extract_double 関数

json_extract_double(x, json_path)

JSON オブジェクトまたは JSON 配列から double 値を抽出します。

×

json_format 関数

json_format(x)

JSON オブジェクトを文字列に変換します。

json_parse 関数

json_parse(x)

文字列を JSON オブジェクトに変換します。

json_size 関数

json_size(x, json_path)

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

json_object_flatten 関数

json_object_flatten(x)

JSON オブジェクトを単一層のキーと値のペアの構造にフラット化します。

×

json_array_contains 関数

json_array_contains 関数は、JSON 配列に特定の値が含まれているかどうかを確認します。

構文

json_array_contains(x, value)

パラメーター

パラメーター

説明

x

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

value

数値。

戻り値の型

boolean

この例では、JSON 配列 [1, 2, 3] に値 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 配列です。

index

JSON 要素のインデックス。インデックスは 0 から始まります。

戻り値の型

varchar

この例では、JSON 配列 ["a", [3, 9], "c"] からインデックス 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_extract 関数は、無効な JSON 型に対してエラーを報告します。このような場合は、代わりに json_extract_scalar 関数を使用してください。

構文

json_extract(x, json_path)

パラメーター

パラメーター

説明

x

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

json_path

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_path

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_extract_bool 関数

json_extract_bool 関数は、JSON オブジェクトまたは JSON 配列からブール値を抽出します。値を抽出できない場合は、null が返されます。

構文

json_extract_bool(x, json_path)

パラメーター

パラメーター

説明

x

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

json_path

JSON パス (例: $.store.book[0].title)。詳細については、「json_path の設定」をご参照ください。

戻り値の型

boolean

この例では、JSON 配列 Results からブール値を抽出します。

  • フィールドの例

    Results:[{"ret":true},{"status":FALSE}]
  • クエリ文

    * | SELECT json_extract_bool(Results, '$.0.ret')
  • クエリ結果

    image

json_extract_long 関数

json_extract_long 関数は、JSON オブジェクトまたは JSON 配列から bigint 値を抽出します。値を抽出できない場合は、null が返されます。

構文

json_extract_long(x, json_path)

パラメーター

パラメーター

説明

x

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

json_path

JSON パス (例: $.store.book[0].title)。詳細については、「json_path の設定」をご参照ください。

戻り値の型

bigint

この例では、JSON 配列 Results から bigint 値を抽出します。

  • フィールドの例

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

    * | SELECT json_extract_long(Results, '$.0.EndTime')
  • クエリ結果

    image

json_extract_double 関数

json_extract_double 関数は、JSON オブジェクトまたは JSON 配列から double 値を抽出します。値を抽出できない場合は、null が返されます。

構文

json_extract_double(x, json_path)

パラメーター

パラメーター

説明

x

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

json_path

JSON パス (例: $.store.book[0].title)。詳細については、「json_path の設定」をご参照ください。

戻り値の型

double

この例では、JSON 配列 Results から double 値を抽出します。

  • サンプル フィールド

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

    * | SELECT json_extract_double(Results, '$.0.EndTime')
  • クエリ結果

    image

json_format 関数

json_format 関数は、JSON オブジェクトを文字列に変換します。

構文

json_format(x)

パラメーター

パラメーター

説明

x

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

戻り値の型

varchar

この例では、JSON 配列 [1,2,3] を文字列 '[1, 2, 3]' に変換します。

  • クエリ文 (テスト)

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

json_parse 関数

json_parse 関数は、文字列を JSON 型に変換し、その文字列が有効な JSON フォーマットであることを検証します。JSON オブジェクトから値を抽出するには、json_extract_scalar 関数を使用します。

構文

json_parse(x)

パラメーター

パラメーター

説明

x

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

戻り値の型

JSON

SQL

  • 例 1

    この例では、文字列 '[1,2,3]' を JSON 配列 [1, 2, 3] に変換します。

    • クエリ文 (テスト)

       * | 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] を JSON 配列 [1, 2, 3] に変換します。

  • 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_path

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

json_object_flatten 関数

json_object_flatten 関数は、JSON オブジェクトを単一層のキーと値のペアの構造にフラット化します。

構文

json_object_flatten(x)

パラメーター

パラメーター

説明

x

パラメーター値は JSON 型です。JSON オブジェクトがオブジェクトでない場合、null が返されます。

戻り値の型

map(varchar, varchar)

この例では、content フィールドの JSON コンテンツを単一層のキーと値のペアにフラット化します。

  • フィールドの例

    content: '{"Time":1626314920,"Info":[{"count":"1"}],"Body":"this is test"}'
  • クエリ文

    select json_object_flatten(content) as data from  (values '{"Time":1626314920,"Info":[{"count":"1"}],"Body":"this is test"}') t (content) limit 1;
  • 出力

    image.png