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

Simple Log Service:配列関数と演算子

最終更新日:Jun 23, 2026

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

Log Service は、次の配列関数と演算子をサポートしています。

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

関数名

構文

説明

SQL

SPL

添字演算子

[x]

配列のインデックス x にある要素を返します。 これは element_at 関数と同じです。

×

array_agg 関数

array_agg(x)

x 内のすべての値の配列を返します。

×

array_distinct 関数

array_distinct(x)

配列から重複する要素を削除します。

array_except 関数

array_except(x, y)

2つの配列の差集合を返します。

array_intersect 関数

array_intersect(x, y)

2つの配列の積集合を返します。

array_join 関数

array_join(x, delimiter)

指定されたデリミタを使用して、配列の要素を文字列に結合します。 null 要素は無視されます。

重要

array_join 関数は最大 1 KB の結果を返します。 制限を超えたデータは切り捨てられます。

array_join(x, delimiter, null_replacement)

指定されたデリミタを使用して、配列の要素を文字列に結合します。 null 要素は null_replacement の値に置き換えられます。

重要

array_join 関数は最大 1 KB の結果を返します。 制限を超えたデータは切り捨てられます。

array_max 関数

array_max(x)

配列内の最大値を返します。

array_min 関数

array_min(x)

配列内の最小値を返します。

array_position 関数

array_position(x, element)

指定された要素の1から始まるインデックスを返します。 要素が存在しない場合は 0 を返します。

array_remove 関数

array_remove(x, element)

配列から指定された要素を削除します。

array_sort 関数

array_sort(x)

配列の要素を昇順にソートします。 null 要素は末尾に配置されます。

array_transpose 関数

array_transpose(x)

行と列を入れ替えることで、2次元配列 (配列の配列) を転置します。

×

array_union 関数

array_union(x, y)

2つの配列の和集合を返します。

×

cardinality 関数

cardinality(x)

配列内の要素の数を返します。

concat 関数

concat(x, y…)

複数の配列を1つの配列に連結します。

×

contains 関数

contains(x, element)

配列に指定された要素が含まれている場合は true を、そうでない場合は false を返します。

×

element_at 関数

element_at(x, y)

配列のインデックス y にある要素を返します。

×

filter 関数

filter(x, lambda_expression)

ラムダ式を使用して配列をフィルター処理し、式を満たす要素のみを返します。

flatten 関数

flatten(x)

2次元配列を1次元配列に変換します。

×

reduce 関数

reduce(x, lambda_expression)

ラムダ式を要素に適用して、配列を単一の値にリデュースします。

reverse 関数

reverse(x)

配列内の要素の順序を逆にします。

sequence 関数

sequence(x, y)

指定された範囲内で連続的に増加する値の配列を返します。 デフォルトのステップは 1 です。

sequence(x, y, step)

カスタムステップを使用して、指定された範囲内で連続的に増加する値の配列を返します。

shuffle 関数

shuffle(x)

配列の要素をシャッフルします。

slice 関数

slice(x, start, length)

配列のサブセットを返します。

transform 関数

transform(x, lambda_expression)

ラムダ式を使用して配列内の各要素を変換します。

zip 関数

zip(x, y...)

複数の配列を1つの2次元配列にマージします。 入力配列の同じインデックスにある要素が新しいサブ配列を形成します。

zip_with 関数

zip_with(x, y, lambda_expression)

ラムダ式を対応する要素の各ペアに適用して、2つの配列を1つの配列にマージします。

×

添字演算子

添字演算子は、配列内のインデックス x にある要素を返します。 これは element_at 関数と同じです。

構文

[x]

パラメーター

パラメーター

説明

x

配列から取得する要素の1から始まるインデックス。 値は bigint である必要があります。

戻り値の型

戻り値は、配列要素と同じデータの型です。

この例では、number フィールドから最初の要素を返します。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリ文

    * | SELECT cast(json_parse(number) as array(bigint)) [1]
  • クエリは 49 を返します。

Array_agg 関数

array_agg 関数は、x 内のすべての値の配列を返します。

構文

array_agg (x)

パラメーター

パラメーター

説明

x

パラメーターは任意のデータの型にすることができます。

戻り値の型

array

status フィールドの値を配列として返します。

  • クエリ文

    * | SELECT array_agg(status) AS array
  • クエリ結果: array フィールドには、HTTP ステータスコード (200、202、204、303、304、401、402、501 など) の配列が含まれます。

Array_distinct 関数

配列から重複する要素を削除します。

構文

array_distinct(x)

パラメーター

パラメーター

説明

x

配列である必要があります。

戻り値の型

array

number フィールドから重複する要素を削除します。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリ文

    *| SELECT array_distinct(cast(json_parse(number) as array(bigint)))
  • クエリ結果は [49,50,45,47] です。 元の配列から重複要素 50 が削除されます。

array_except 関数

array_except 関数は、2つの配列の差集合を返します。

構文

array_except(x, y)

パラメーター

パラメーター

説明

x

配列である必要があります。

y

配列である必要があります。

戻り値の型

array

配列 [1,2,3,4,5] と [1,3,5,7] の差集合を計算します。

  • クエリ文

    * | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])
  • クエリは [2,4] を返します。

array_intersect 関数

2つの配列の積集合を計算します。

構文

array_intersect(x, y)

パラメーター

パラメーター

説明

x

配列。

y

配列。

戻り値の型

array

配列 [1,2,3,4,5][1,3,5,7] の積集合を計算します。

  • クエリと分析文

    * | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])
  • クエリと分析結果は [1,3,5] です。

array_join 関数

指定されたデリミタを使用して、配列要素を文字列に連結します。

構文

  • デリミタを使用して配列要素を文字列に連結します。 null 要素は無視されます。

    array_join(x, delimiter)
  • デリミタを使用して配列要素を文字列に連結します。 null 要素を null_replacement に置き換えます。

    array_join(x, delimiter,null_replacement)

パラメーター

パラメーター

説明

x

入力配列。

delimiter

配列要素を区切るために使用される文字列。

null_replacement

null 要素を置き換えるために使用される文字列。

戻り値の型

varchar。

この例では、配列 [null, 'Log', 'Service'] の要素をスペースをデリミタとして使用して文字列に連結します。 null 要素を 'Alicloud' に置き換えます。

  • クエリ

    * | SELECT array_join(array[null,'Log','Service'],' ','Alicloud')
  • 結果: _col0 列の値は Alicloud Log Service です。

Array_max 関数

配列内の最大値を返します。

構文

array_max(x) 

パラメーター

パラメーター

説明

x

入力は配列である必要があります。

重要

配列に null 要素が含まれている場合、関数は null を返します。

戻り値の型

返される値は、配列要素と同じデータの型です。

この例では、数値の配列から最大値を見つけます。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリ文

    *| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number
  • クエリ結果: max_number の値は 50 です。

Array_min 関数

配列内の最小値を返します。

構文

array_min(x) 

パラメーター

パラメーター

説明

x

入力配列。

重要

配列に null 要素が含まれている場合、関数は null を返します。

戻り値の型

戻り値は、配列要素と同じデータの型です。

数値の配列から最小値を見つけます。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリ文

    *| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number
  • クエリは 45 を返します。

Array_position 関数

array_position 関数は、配列内の要素の1から始まるインデックスを返します。 要素が見つからない場合は 0 を返します。

構文

array_position(x, element)

パラメーター

パラメーター

説明

x

検索対象の配列。

element

配列内で検索する要素。

説明

検索する要素が null の場合、関数は null を返します。

戻り値の型

bigint 値を返します。

配列 [49,45,47] 内の 45 のインデックスを検索します。

  • クエリと分析文

    * | SELECT array_position(array[49,45,47],45)
  • 結果は 2 で、要素 45 が配列のインデックス 2 にあることを示します。

array_remove 関数

array_remove 関数は、配列から指定された要素のすべての出現を削除します。

構文

array_remove(x, element)

パラメーター

パラメーター

説明

x

入力配列。

element

配列から削除する要素。

説明

element が null の場合、関数は null を返します。

戻り値の型

配列を返します。

配列 [49,45,47] から 45 を削除します。

  • クエリと分析文

    * | SELECT array_remove(array[49,45,47],45)
  • 結果は [49,47] です。

array_sort 関数

array_sort 関数は、配列の要素を昇順にソートし、null 要素を末尾に配置します。

構文

array_sort(x)

パラメーター

パラメーター

説明

x

ソートする配列。

戻り値の型

配列を返します。

配列 ['b', 'd', null, 'c', 'a'] を昇順にソートします。

  • クエリ文

    * | SELECT array_sort(array['b','d',null,'c','a'])
  • 結果は ["a","b","c","d",null] です。 要素はアルファベットの昇順にソートされ、null 値は末尾に配置されます。

array_transpose 関数

array_transpose 関数は、2次元配列 (マトリックス) を転置します。 内部配列間で同じインデックスを共有する要素をグループ化することにより、新しい2次元配列を作成します。

構文

array_transpose(x)

パラメーター

パラメーター

説明

x

入力は array(double) 型の2次元配列です。

戻り値の型

array(double)

この関数は、各内部配列の同じインデックスにある要素をグループ化して、新しい内部配列を形成します。 たとえば、配列 [0,1,2,3][10,19,18,17]、および [9,8,7] から、関数は最初の要素 (0、10、および 9) を取得し、それらを新しい内部配列 [0.0,10.0,9.0] にグループ化します。

  • クエリと分析文

    * | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]])
  • クエリと分析結果: _col0 列の値は [[0.0,10.0,9.0],[1.0,19.0,8.0],[2.0,18.0,7.0],[3.0,17.0]] です。

array_union 関数

2つの配列の和集合の要素からなる配列を、重複なしで返します。

構文

array_union(x, y)

パラメーター

パラメーター

説明

x

配列である必要があります。

y

配列である必要があります。

戻り値の型

array

この例では、配列 [1,2,3,4,5] と [1,3,5,7] の和集合を計算します。

  • クエリ文

    * | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])
  • クエリは [1,2,3,4,5,7] を返します。

Cardinality 関数

配列内の要素の数を返します。

構文

cardinality(x)

パラメーター

パラメーター

説明

x

入力配列。

戻り値の型

bigint 値を返します。

この例では、number フィールドの要素数をカウントします。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリ文

    *| SELECT cardinality(cast(json_parse(number) as array(bigint)))
  • 配列には 5 つの要素が含まれているため、クエリは 5 を返します。

concat 関数

複数の配列を1つの配列に連結します。

構文

concat(x, y…)

パラメーター

パラメーター

説明

x

配列である必要があります。

y

配列である必要があります。

戻り値の型

array

配列 ['red','blue'] と ['yellow','green'] を連結します。

  • クエリ文

    * | SELECT concat(array['red','blue'],array['yellow','green'])
  • クエリは ["red","blue","yellow","green"] を返します。

contains 関数

配列に指定された要素が含まれているかどうかを確認します。 見つかった場合は true を返します。

構文

contains(x, element)

パラメーター

パラメーター

説明

x

確認する配列。

element

配列内で検索する要素。

戻り値の型

boolean

region フィールドに 'cn-beijing' が含まれているかどうかを確認します。

  • フィールド例

    region:["cn-hangzhou","cn-shanghai","cn-beijing"]
  • クエリ文

    *| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing')
  • クエリは _col0 という名前の列を返し、その値は true です。これは、region 配列に cn-beijing が含まれていることを示します。

element_at 関数

配列のインデックス y にある要素を返します。

構文

element_at(x, y)

パラメーター

パラメーター

説明

x

要素を取得する配列。

y

配列から取得する要素の1から始まる bigint インデックス。

戻り値の型

戻り値は、配列内の要素と同じデータの型です。

この例では、number フィールドに JSON 文字列として格納されている配列から2番目の要素を取得します。

  • フィールド例

    number:[49,50,45,47,50]
  • クエリと分析文

    * |
    SELECT
      element_at(cast(json_parse(number) AS array(varchar)), 2)
  • クエリは _col0 という名前の列を返し、その値は 50 です。

Filter 関数

filter 関数は、ラムダ式に基づいて配列をフィルター処理し、式が true と評価される要素のみを含む新しい配列を返します。

構文

filter(x, lambda_expression)

パラメーター

パラメーター

説明

x

入力配列。

lambda_expression

ラムダ式。 詳細については、「ラムダ式」をご参照ください。

戻り値の型

配列を返します。

配列 [5,-6,null,7] から 0 より大きい要素を返します。 ラムダ式は x -> x > 0 です。

  • クエリ文

    * | SELECT filter(array[5,-6,null,7],x -> x > 0)
  • クエリは [5,7] を返します。

Flatten 関数

2次元配列を1次元配列にフラット化します。

構文

flatten(x)

パラメーター

パラメーター

説明

x

フラット化する2次元配列。 値は配列である必要があります。

戻り値の型

1次元配列を返します。

この例では、2次元配列を1次元配列にフラット化します。

  • クエリ文

    * | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]])
  • クエリと分析結果: _col0 列には [1,2,3,4,5,2,2,4] が含まれます。

Reduce 関数

reduce 関数は、ラムダ式を配列に適用し、その要素を単一の値に集約します。

構文

reduce(array, initialState, inputFunction, outputFunction)

パラメーター

パラメーター

説明

array

bigint 要素の入力配列。

initialState, inputFunction, outputFunction

リダクションロジックを定義します。これには、初期状態、各要素を処理する入力関数、および結果を最終処理する出力関数が含まれます。 詳細については、「ラムダ式」をご参照ください。

戻り値の型

bigint

配列 [5, 20, 50] の要素の合計を計算します。

  • クエリ文

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • クエリ結果: 75

Reverse 関数

配列内の要素の順序を逆にします。

構文

reverse(x)

パラメーター

パラメーター

説明

x

逆にする配列。

戻り値の型

要素が逆の順序になった配列。

配列 [1,2,3,4,5] の要素を逆にします。

  • クエリ文

    * | SELECT reverse(array[1,2,3,4,5])
  • クエリ結果: [5,4,3,2,1]

Sequence 関数

sequence 関数は、指定された範囲内で連続的に増加する値の配列を返します。

構文

  • デフォルトのステップ 1 を使用します。

    sequence(x, y)
  • カスタムステップを使用します。

    sequence(x, y, step)

パラメーター

パラメーター

説明

x

シーケンスの開始値。 サポートされているデータの型は bigint と timestamp です。 timestamp 型の場合、UNIX タイムスタンプまたは日時式を使用できます。

y

シーケンスの終了値。 サポートされているデータの型は bigint と timestamp です。 timestamp 型の場合、UNIX タイムスタンプまたは日時式を使用できます。

step

ステップ値。

x と y が日時式の場合、step パラメーターは次のいずれかのフォーマットである必要があります:

  • interval ' n' year to month: 間隔は n 年です。

  • interval 'n' day to second: 間隔は n 日です。

戻り値の型

array

  • 0 から 10 までの偶数を返します。

    • クエリ文

      * | SELECT sequence(0,10,2)
    • クエリは [0,2,4,6,8,10] を返します。

  • 2017年10月23日から2021年8月12日までの日付を1年間隔で返します。

    • クエリ文

      ww* | SELECT  sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )
    • クエリ結果

      ["2017-10-23 13:37:06.000","2018-10-23 13:37:06.000","2019-10-23 13:37:06.000","2020-10-23 13:37:06.000"]
  • 1628733298 から 1628734085 までの UNIX タイムスタンプを 60 秒間隔で返します。

    • クエリ文

      * | SELECT  sequence(1628733298,1628734085,60)
    • 結果では、_col0 フィールドにタイムスタンプ配列 [1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078] が含まれます。

Shuffle 関数

配列の要素をランダムにシャッフルします。

構文

shuffle(x)

パラメーター

パラメーター

説明

x

配列である必要があります。

戻り値の型

配列を返します。

この例では、配列 [1,2,3,4,5] のランダムな順列を返します。

  • クエリと分析文

    *| SELECT shuffle(array[1,2,3,4,5])
  • クエリと分析結果: クエリは、ランダムに並べ替えられた配列を含む単一の列 _col0 を返します。 値の例には、[3,1,2,4,5][5,1,2,4,3][2,5,3,1,4] などがあります。

slice 関数

配列のサブセットを返します。

構文

slice(x, start, length)

パラメーター

パラメーター

説明

x

入力配列。

start

スライスの1から始まる開始インデックス。

  • start が負の場合、インデックスは配列の末尾からカウントされます。

  • start が正の場合、インデックスは配列の先頭からカウントされます。

length

サブセットに含める要素の数。

戻り値の型

array

この例では、配列 [1,2,4,5,6,7,7] の3番目の要素から始まる2つの要素のサブセットを返します。

  • クエリと分析文

    * | SELECT slice(array[1,2,4,5,6,7,7],3,2)
  • クエリと分析結果: _col0 列には [4,5] が含まれます。

Transform 関数

transform 関数は、ラムダ式を配列の各要素に適用します。

構文

transform(x, lambda_expression)

パラメーター

パラメーター

説明

x

配列である必要があります。

lambda_expression

適用するラムダ式。 詳細については、「ラムダ式」をご参照ください。

戻り値の型

配列。

この例では、配列 [5,6] の各要素に 1 を加算します。

  • クエリと分析文

    * | SELECT transform(array[5,6],x -> x + 1)
  • クエリは [6,7] を返します。

zip 関数

zip 関数は、複数の配列を2次元配列にマージします。 入力配列から同じインデックスを持つ要素をグループ化して、ネストされた配列を形成します。

構文

zip(x, y...) 

パラメーター

パラメーター

説明

x

配列である必要があります。

y

配列である必要があります。

戻り値の型

2次元配列を返します。

この例では、配列 [1,2,3]、['1b',null,'3b']、および [1,2,3] を2次元配列にマージします。

  • クエリと分析文

    * | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3])
  • クエリと分析結果の _col0 列は [[1,"1b",1],[2,null,2],[3,"3b",3]] を返します。 この関数は、共有インデックスによって入力配列の要素をグループ化します。

zip_with 関数

zip_with 関数は、ラムダ式を対応する要素に適用することで、2つの配列をマージします。

構文

zip_with(x, y, lambda_expression)

パラメーター

パラメーター

説明

x

最初の入力配列。

y

2番目の入力配列。

lambda_expression

要素を結合する方法を指定するラムダ式。 詳細については、「ラムダ式」をご参照ください。

戻り値の型

array

この例では、ラムダ式 (x, y) -> x + y を使用して、配列 [1,2] と [3,4] の対応する要素を加算します。 この関数は、結果を新しい配列で返します。

  • クエリと分析文

    SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
  • クエリと分析結果: _col0 列の値は [4,6] です。