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

Simple Log Service:JSON 関数

最終更新日:Jun 23, 2026

このトピックでは、JSON 関数の基本的な構文と例について説明します。

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

重要
  • Log Service のクエリ文では、文字列をシングルクォーテーション (') で囲みます。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_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 オブジェクト内のキーと値のペアの数を返します。

json_object_flatten 関数

json_object_flatten(x)

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

×

Json_array_contains

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

構文

json_array_contains(x, value)

パラメーター

パラメーター

説明

x

JSON 配列。

value

JSON 配列内で検索する値。

戻り値の型

boolean

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

  • クエリ文 (テスト)

    * | SELECT json_array_contains('[1, 2, 3]', 2)
  • JSON 配列 [1, 2, 3] に 2 が含まれているため、クエリは true を返します。

json_array_get 関数

JSON 配列内の指定されたインデックスにある要素を返します。

構文

json_array_get(x, index)

パラメーター

パラメーター

説明

x

JSON 配列。

index

0 から始まる要素のインデックス。

戻り値の型

varchar

JSON 配列 ["a", [3, 9], "c"] からインデックス 1 の要素を返します。

  • クエリ文 (テスト)

    * | SELECT json_array_get('["a", [3, 9], "c"]', 1)
  • クエリ結果は [3,9] です。

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 です。

  • 例 2:time フィールドの JSON 配列の要素をカウントします。

    • フィールドのサンプル

      time:["time_local","request_time","upstream_response_time"]
    • クエリおよび分析文

      * | SELECT json_array_length(time)
    • 結果は 3 です。

Json_extract 関数

json_extract 関数は、JSON オブジェクトまたは JSON 配列から、JSON オブジェクトや JSON 配列などの JSON 値を抽出します。

重要

json_extract 関数は、無効な JSON 型に対してエラーを返します。代わりに json_extract_scalar 関数を使用してください。

構文

json_extract(x, json_path)

パラメーター

パラメーター

説明

x

JSON オブジェクトまたは JSON 配列。

json_path

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

戻り値の型

JSON 形式の文字列。

SQL

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

  • サンプルデータ

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

    * | SELECT json_extract(Results, '$.0.EndTime')
  • クエリは 1626314920 を返します。

SPL

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

  • サンプルデータ

Results:[{"EndTime":1626314920},{"FireResult":2}]
  • SPL 文

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

結果には、1626314920 に設定されたフィールド a が含まれます。

json_extract_scalar

json_extract_scalar 関数は、JSON オブジェクトまたは JSON 配列からスカラー値 (文字列、整数、またはブール値) を抽出します。

構文

json_extract_scalar(x, json_path)

パラメーター

パラメーター

説明

x

JSON オブジェクトまたは JSON 配列。

json_path

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

戻り値の型

varchar

SQL

Results フィールドから RawResultCount フィールドの値を抽出し、値を bigint にキャストしてから合計を計算します。

  • サンプルデータ

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

    * | SELECT sum(cast(json_extract_scalar(Results,'$.1.RawResultCount') AS bigint) )
  • クエリ結果は 288 です。

SPL

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

  • サンプルデータ

Results:[{"EndTime":1626314920},{"RawResultCount":1}]
  • SPL 文

* | extend a = json_extract_scalar(Results, '$.1.RawResultCount')
  • a フィールドの値は 1 です。

json_extract_bool

JSON オブジェクトまたは JSON 配列からブール値を抽出します。抽出に失敗した場合は null を返します。

構文

json_extract_bool(x, json_path)

パラメーター

パラメーター

説明

x

JSON オブジェクトまたは JSON 配列。

json_path

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

戻り値の型

boolean

Results JSON 配列からブール値を抽出します。

  • フィールドのサンプル

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

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

    クエリは true を返します。

json_extract_long

JSON オブジェクトまたは JSON 配列から bigint 値を抽出します。抽出に失敗した場合は null を返します。

構文

json_extract_long(x, json_path)

パラメーター

パラメーター

説明

x

JSON 値。

json_path

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

戻り値

bigint

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

  • フィールドのサンプル

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

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

    1626314920 を返します。

Json_extract_double

JSON オブジェクトまたは JSON 配列から double 値を抽出します。抽出に失敗した場合は null を返します。

構文

json_extract_double(x, json_path)

パラメーター

パラメーター

説明

x

JSON オブジェクトまたは JSON 配列。

json_path

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

戻り値の型

double

Results JSON 配列から double 値を抽出します。

  • フィールドのサンプル

    Results:[{"EndTime":1626314920},{"FireResult":2}]
  • クエリおよび分析文

    * | SELECT json_extract_double(Results, '$.0.EndTime')
  • クエリおよび分析結果

    クエリは 1626314920.0 を返します。

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]'))
  • クエリ結果は '[1, 2, 3]' です。

json_parse 関数

json_parse 関数は、文字列を 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]')
    • クエリ結果は [1, 2, 3] です。

  • 例 2

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

    • この例では、message、processName、thread、threadName、module、funcName、levelname、process などのキーと値のペアを含む JSON オブジェクトである logging フィールドを処理します。

    • クエリ文 (テスト)

      *| SELECT map_keys(try_cast(json_parse(logging) AS map(varchar, json)))
    • クエリ結果は ["funcName","levelname","message","module","process","processName","thread","threadName"] です。

SPL

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

  • SPL 文

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

a フィールドの値は [1, 2, 3] です。

json_size 関数

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

構文

json_size(x, json_path)

パラメーター

パラメーター

説明

x

JSON オブジェクトまたは JSON 配列。

json_path

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

戻り値の型

bigint

この例では、RawResults フィールドの要素数を計算します。

  • フィールドのサンプル

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

    * | SELECT json_size(Results, '$.0.RawResults')
  • クエリ結果は 1 です。

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;
  • 出力

    data フィールドの値は {"Time":"1626314920","Info":"[{\"count\":\"1\"}]","Body":"this is test"} です。これは、元の JSON オブジェクトが単一層のキーと値の構造にフラット化されたことを示しています。