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

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

最終更新日:Nov 19, 2024

このトピックでは、配列関数と演算子の構文について説明します。 このトピックでは、関数と演算子の使用方法の例も示します。

次の表に、Simple Log Serviceでサポートされている配列関数と演算子を示します。

重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 '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要素が含まれている場合、null要素は無視されます。

重要

array_join関数は、最大1 KBのデータを返すことができます。 返されるデータのサイズが1 KBを超える場合、データは切り捨てられます。

array_join( xdelimiternull_replacement)

指定された区切り文字を使用して、配列の要素を文字列に連結します。 配列にnull要素が含まれている場合、null要素はnull_replacementパラメーターの値に置き換えられます。

重要

array_join関数は、最大1 KBのデータを返すことができます。 返されるデータのサイズが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要素が含まれている場合、null要素は末尾に配置されます。

array_transpose関数

array_transpose( x)

行列を転置し、行列の要素で構成される新しい2次元配列を返します。 要素は同じインデックスを使用して配置されます。

×

array_union関数

array_union( x, y)

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

×

カーディナリティ関数

cardinality( x)

配列内の要素数をカウントします。

concat関数

concat( x, y …)

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

×

contains関数

contains( x, element)

配列に指定された要素が含まれているかどうかをチェックします。 配列に指定された要素が含まれている場合、関数はtrueを返します。

×

element_at関数

element_at( x, y)

配列内のインデックスがyの要素を返します。

×

フィルター関数

フィルター (xlambda_expression)

ラムダ式に基づいて配列内の要素をフィルタリングし、ラムダ式に一致する要素を返します。

フラット化関数

flatten( x)

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

×

reduce関数

reduce( xlambda_expression)

ラムダ式に基づいて、配列内の要素の合計を返します。

逆関数

リバース (x)

配列内の要素を反転します。

シーケンス関数

シーケンス (x, y)

指定した範囲内の要素の配列を返します。 要素は連続的で増分的です。 増分ステップは1で、デフォルト値です。

シーケンス (x, y, step)

指定した範囲内の要素の配列を返します。 要素は連続的で増分的です。 増分ステップはカスタム値です。

シャッフル機能

シャッフル (x)

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

スライス関数

slice( xstartlength)

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

変換関数

transform( x, lambda_expression)

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

zip関数

zip( x, y ...)

複数の配列を2次元配列にマージします。 入力配列で同じインデックスを持つ要素は、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]
  • クエリと分析結果 下标运算符

array_agg関数

array_agg関数は、xフィールドのすべての値で構成される配列を返します。

構文

array_agg (x)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

戻り値のデータ型

配列型。

statusフィールドのすべての値で構成される配列を返します。

  • クエリ文

    * | SELECT array_agg(status) AS array
  • クエリと分析結果 array_agg

array_distinct関数

array_distinct関数は、配列から重複する要素を削除します。

構文

array_distinct(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • サンプルフィールド

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

    *| SELECT array_distinct(cast(json_parse(number) as array(bigint)))
  • クエリと分析結果 array_distinct

array_except関数

array_except関数は、2つの配列の差を計算します。

構文

array_except(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • クエリ文

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

array_intersect関数

array_intersect関数は、2つの配列の交差を計算します。

構文

array_intersect(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • クエリ文

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

array_join関数

array_join関数は、指定された区切り文字を使用して、配列の要素を文字列に連結します。

構文

  • 次の構文を使用する場合、関数は指定された区切り文字を使用して配列の要素を文字列に連結します。 配列にnull要素が含まれている場合、null要素は無視されます。

    array_join(x, delimiter)
  • 次の構文を使用する場合、関数は指定された区切り文字を使用して配列の要素を文字列に連結します。 配列にnull要素が含まれている場合、null要素はnull_replacementパラメーターの値に置き換えられます。

    array_join(x, delimiter,null_replacement)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意の配列型です。

区切り文字

このパラメーターの値は、要素を連結するために使用される区切り文字です。 このパラメーターには文字列を指定できます。

null_置換

このパラメーターの値は、null要素を置き換えるために使用される文字列です。

戻り値のデータ型

varcharタイプ。

[null、'Log' 、'Service'] 配列の要素をスペースを使用して文字列に連結し、null要素をAlicloudに置き換えます。

  • クエリ文

    * | SELECT array_join(array[null,'Log','Service'],' ','Alicloud')
  • クエリと分析結果 array_join

array_max関数

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
  • クエリと分析結果 array_max

array_min関数

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
  • クエリと分析結果 array_min

array_position関数

array_position関数は、配列内の指定された要素のインデックスを返します。 インデックスは1から始まります。 指定された要素が存在しない場合、関数は0を返します。

構文

array_position(x, element)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

要素

このパラメーターの値は、配列内の要素です。

説明

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

戻り値のデータ型

bigint型。

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

  • クエリ文

    * | SELECT array_position(array[49,45,47],45)
  • クエリと分析結果 array_position

array_remove関数

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

構文

array_remove(x, element)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

要素

このパラメーターの値は、配列内の要素です。

説明

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

戻り値のデータ型

配列型。

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

  • クエリ文

    * | SELECT array_remove(array[49,45,47],45)
  • クエリと分析結果 array_remove函数

array_sort関数

array_sort関数は、配列内の要素を昇順でソートします。 配列にnull要素が含まれている場合、null要素は末尾に配置されます。

構文

array_sort(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

['b', 'd', null, 'c', 'a'] 配列の要素を昇順に並べ替えます。

  • クエリ文

    * | SELECT array_sort(array['b','d',null,'c','a'])
  • クエリと分析結果 array_sort

array_transpose関数

array_transpose関数は、行列を転置し、行列の要素で構成される新しい2次元配列を返します。 要素は同じインデックスを使用して配置されます。

構文

array_transpose(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は、配列 (double) 型です。

戻り値のデータ型

配列 (ダブル) タイプ。

異なる2次元配列で同じインデックスを使用して配置された要素から2次元配列を作成します。 たとえば、[0,1、2,3] 、[10,19、18,17] 、および [9,8、7] の配列では、インデックス1を使用して、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]])
  • クエリと分析結果 array_transpose

array_union関数

array_union関数は、2つの配列の和集合を計算します。

構文

array_union(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • クエリ文

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

cardinality関数

カーディナリティ関数は、配列内の要素の数をカウントします。

構文

cardinality(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

bigint型。

numberフィールドの値の要素数を数えます。

  • サンプルフィールド

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

    *| SELECT cardinality(cast(json_parse(number) as array(bigint)))
  • クエリと分析結果 cardinality

concat関数

concat関数は、複数の配列を1つの配列に連結します。

構文

concat(x, y…)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

['red' 、'blue'] と ['yellow' 、'green'] の配列を1つの配列に連結します。

  • クエリ文

    * | SELECT concat(array['red','blue'],array['yellow','green'])
  • クエリと分析結果 concat-array

contains 関数

contains関数は、配列に指定された要素が含まれているかどうかをチェックします。 配列に指定された要素が含まれている場合、関数はtrueを返します。

構文

contains(x, element)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

要素

このパラメーターの値は、配列内の要素です。

戻り値のデータ型

ブール型。

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

  • サンプルフィールド

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

    *| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing')
  • クエリと分析結果 contains

element_at関数

element_at関数は、配列内のインデックスがyである要素を返します。

構文

element_at(x, y)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は、配列内の要素のインデックスです。 インデックスは1から始まります。 このパラメーターの値はbigint型です。

戻り値のデータ型

任意のデータ型。

numberフィールドの値の2番目の要素を返します。

  • サンプルフィールド

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

    * |
    SELECT
      element_at(cast(json_parse(number) AS array(varchar)), 2)
  • クエリと分析結果  element_at

フィルター関数

filter関数は、ラムダ式に基づいて配列内の要素をフィルタリングし、ラムダ式に一致する要素を返します。

構文

filter(x, lambda_expression)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

ラムダ_式

このパラメーターの値はラムダ式です。 詳細は、「Lambda式」をご参照ください。

戻り値のデータ型

配列型。

x -> x > 0ラムダ式を使用して、[5,-6,null,7] 配列の0より大きい要素を返します。

  • クエリ文

    * | SELECT filter(array[5,-6,null,7],x -> x > 0)
  • クエリと分析結果 filter

フラット関数

flatten関数は、2次元配列を1次元配列に変換します。

構文

flatten(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

2次元配列 [array[1,2、3,4] 、array[5,2、2,4] を1次元配列に変換します。

  • クエリ文

    * | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]])
  • クエリと分析結果 flatten

reduce関数

reduce関数は、ラムダ式に基づいて配列内の要素の合計を返します。

構文

reduce(x, lambda_expression)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

ラムダ_式

このパラメーターの値は、初期値、使用するラムダ式、およびラムダ式結果の処理方法の組み合わせです。 詳細は、「Lambda式」をご参照ください。

戻り値のデータ型

bigint型。

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

  • クエリ文

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

逆関数

逆関数は、配列内の要素を逆にします。

構文

reverse(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • クエリ文

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

シーケンス関数

シーケンス関数は、指定された範囲内の要素の配列を返します。 要素は連続的で増分的です。

構文

  • 次の構文を使用する場合は、デフォルトの増分ステップ (1) を使用する必要があります。

    sequence(x, y)
  • 次の構文を使用する場合は、カスタムの増分ステップを指定できます。

    sequence(x, y, step)

パラメーター

パラメーター

説明

x

このパラメーターの値は、bigint型またはtimestamp型です。 UNIXのタイムスタンプと日時式がサポートされています。

y

このパラメーターの値は、bigint型またはtimestamp型です。 UNIXのタイムスタンプと日時式がサポートされています。

ステップ

このパラメーターの値は増分ステップです。

xパラメーターとyパラメーターの値が日付と時刻の式の場合、stepパラメーターの値は次のいずれかの形式になります。

  • interval 'n' year to month: 増分ステップはn年です。

  • 間隔 'n' 日から秒: 増分ステップはn日です。

戻り値のデータ型

配列型。

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

    • クエリ文

      * | SELECT sequence(0,10,2)
    • クエリと分析結果 sequence

  • 例2: 2017年10月23日から2021年8月12日までの日付を1年の増分ステップで返します。

    • クエリ文

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

  • 例3: 60秒の増分ステップでUNIXタイムスタンプを1628733298から1628734085に返します。

    • クエリ文

      * | SELECT  sequence(1628733298,1628734085,60)
    • クエリと分析結果 sequence

シャッフル関数

シャッフル関数は、配列内の要素をシャッフルします。

構文

shuffle(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

[1,2,3,4,5] 配列の要素をシャッフルします。

  • クエリ文

    *| SELECT shuffle(array[1,2,3,4,5])
  • クエリと分析結果 shuffle

スライス関数

slice関数は、配列のサブセットを返します。

構文

slice(x, start, length)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

start

このパラメーターの値は、Simple Log Serviceが要素の抽出を開始するインデックスです。

  • startパラメーターの値が負数の場合、Simple Log Serviceは配列の末尾から要素の抽出を開始します。

  • startパラメーターの値が正数の場合、Simple Log Serviceは配列の先頭から要素の抽出を開始します。

長さ

このパラメーターの値は、取得するサブセット内の要素の数です。

戻り値のデータ型

配列型。

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

  • クエリ文

    * | SELECT slice(array[1,2,4,5,6,7,7],3,2)
  • クエリと分析結果 slice

変換関数

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

構文

transform(x, lambda_expression)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

ラムダ_式

このパラメーターの値はラムダ式です。 詳細は、「Lambda式」をご参照ください。

戻り値のデータ型

配列型。

[5,6] 配列の各要素に1を追加し、新しい配列を返します。

  • クエリ文

    * | SELECT transform(array[5,6],x -> x + 1)
  • クエリと分析結果 transform

zip関数

zip関数は、複数の配列を2次元配列にマージします。 入力配列で同じインデックスを持つ要素は、2次元配列で新しい配列を形成します。

構文

zip(x, y...) 

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

戻り値のデータ型

配列型。

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

  • クエリ文

    * | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3])
  • クエリと分析結果 zip

zip_with関数

zip_with関数は、ラムダ式を使用して2つの配列を1つの配列にマージします。

構文

zip_with(x, y, lambda_expression)

パラメーター

パラメーター

説明

x

このパラメーターの値は配列型です。

y

このパラメーターの値は配列型です。

ラムダ_式

このパラメーターの値はラムダ式です。 詳細は、「Lambda式」をご参照ください。

戻り値のデータ型

配列型。

(x, y) -> x + yのラムダ式を使用して、[1,2] および [3,4] 配列に要素を追加し、新しい配列を返します。

  • クエリ文

    SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
  • クエリと分析結果 zip_with