Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

配列関数

最終更新 Markdown で表示Agent セットアップ

Cloudflare Pipelines のスカラー関数実装は Apache DataFusionArroyo 経由)を基にしており、このドキュメントは DataFusion の関数リファレンスから派生しています。

array_append

配列の末尾に要素を追加します。

array_append(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列へ追加する要素。

> select array_append([1, 2, 3], 4);
+--------------------------------------+
| array_append(List([1,2,3]),Int64(4)) |
+--------------------------------------+
| [1, 2, 3, 4]                         |
+--------------------------------------+

エイリアス

  • array_push_back
  • list_append
  • list_push_back

array_sort

配列を並べ替えます。

array_sort(array, desc, nulls_first)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • desc: 降順で並べ替えるかどうか(ASC または DESC)。
  • nulls_first: null を先頭に置くかどうか(NULLS FIRST または NULLS LAST)。

> select array_sort([3, 1, 2]);
+-----------------------------+
| array_sort(List([3,1,2]))   |
+-----------------------------+
| [1, 2, 3]                   |
+-----------------------------+

エイリアス

  • list_sort

array_resize

リストを size 個の要素になるようにリサイズします。新しい要素は value で初期化します。value を指定しない場合は空になります。

array_resize(array, size, value)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • size: 指定した配列の新しいサイズ。
  • value: 新しい要素の値。指定しない場合は空です。

> select array_resize([1, 2, 3], 5, 0);
+-------------------------------------+
| array_resize(List([1,2,3],5,0))     |
+-------------------------------------+
| [1, 2, 3, 0, 0]                     |
+-------------------------------------+

エイリアス

  • list_resize

array_cat

array_concat のエイリアスです。

array_concat

配列を連結します。

array_concat(array[, ..., array_n])

引数

  • array: 連結する配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • array_n: 続けて連結する配列列、またはリテラル配列。

> select array_concat([1, 2], [3, 4], [5, 6]);
+---------------------------------------------------+
| array_concat(List([1,2]),List([3,4]),List([5,6])) |
+---------------------------------------------------+
| [1, 2, 3, 4, 5, 6]                                |
+---------------------------------------------------+

エイリアス

  • array_cat
  • list_cat
  • list_concat

array_contains

array_has のエイリアスです。

array_has

配列が要素を含む場合に true を返します。

array_has(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: スカラーまたは配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

エイリアス

  • list_has

array_has_all

サブ配列のすべての要素が配列に存在する場合に true を返します。

array_has_all(array, sub-array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • sub-array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

エイリアス

  • list_has_all

array_has_any

両方の配列に共通する要素がある場合に true を返します。

array_has_any(array, sub-array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • sub-array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

エイリアス

  • list_has_any

array_dims

配列の各次元を配列として返します。

array_dims(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_dims([[1, 2, 3], [4, 5, 6]]);
+---------------------------------+
| array_dims(List([1,2,3,4,5,6])) |
+---------------------------------+
| [2, 3]                          |
+---------------------------------+

エイリアス

  • list_dims

array_distinct

重複を除いた配列の一意な値を返します。

array_distinct(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_distinct([1, 3, 2, 3, 1, 2, 4]);
+---------------------------------+
| array_distinct(List([1,2,3,4])) |
+---------------------------------+
| [1, 2, 3, 4]                    |
+---------------------------------+

エイリアス

  • list_distinct

array_element

配列からインデックス n の要素を取り出します。

array_element(array, index)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • index: 配列から要素を取り出すインデックス。

> select array_element([1, 2, 3, 4], 3);
+-----------------------------------------+
| array_element(List([1,2,3,4]),Int64(3)) |
+-----------------------------------------+
| 3                                       |
+-----------------------------------------+

エイリアス

  • array_extract
  • list_element
  • list_extract

array_extract

array_element のエイリアスです。

array_fill

指定した値のコピーで埋めた配列を返します。

非推奨: 代わりに array_repeat を使ってください。

array_fill(element, array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列へコピーする要素。

flatten

配列の配列を平坦な配列へ変換します。

  • 入れ子の深さに関係なく適用されます
  • すでに平坦な配列は変更しません

平坦化した配列には、元のすべての配列の要素が含まれます。

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
flatten(array)

array_indexof

array_position のエイリアスです。

array_intersect

array1 と array2 の共通部分の要素からなる配列を返します。

array_intersect(array1, array2)

引数

  • array1: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • array2: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_intersect([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_intersect([1, 2, 3, 4], [5, 6, 3, 4]);       |
+----------------------------------------------------+
| [3, 4]                                             |
+----------------------------------------------------+
> select array_intersect([1, 2, 3, 4], [5, 6, 7, 8]);
+----------------------------------------------------+
| array_intersect([1, 2, 3, 4], [5, 6, 7, 8]);       |
+----------------------------------------------------+
| []                                                 |
+----------------------------------------------------+

エイリアス

  • list_intersect

array_join

array_to_string のエイリアスです。

array_length

指定した配列次元の長さを返します。

array_length(array, dimension)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • dimension: 配列の次元。

> select array_length([1, 2, 3, 4, 5]);
+---------------------------------+
| array_length(List([1,2,3,4,5])) |
+---------------------------------+
| 5                               |
+---------------------------------+

エイリアス

  • list_length

array_ndims

配列の次元数を返します。

array_ndims(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_ndims([[1, 2, 3], [4, 5, 6]]);
+----------------------------------+
| array_ndims(List([1,2,3,4,5,6])) |
+----------------------------------+
| 2                                |
+----------------------------------+

エイリアス

  • list_ndims

array_prepend

配列の先頭に要素を追加します。

array_prepend(element, array)

引数

  • element: 配列の先頭へ追加する要素。
  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_prepend(1, [2, 3, 4]);
+---------------------------------------+
| array_prepend(Int64(1),List([2,3,4])) |
+---------------------------------------+
| [1, 2, 3, 4]                          |
+---------------------------------------+

エイリアス

  • array_push_front
  • list_prepend
  • list_push_front

array_pop_front

先頭要素を除いた配列を返します。

array_pop_front(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_pop_front([1, 2, 3]);
+-------------------------------+
| array_pop_front(List([1,2,3])) |
+-------------------------------+
| [2, 3]                        |
+-------------------------------+

エイリアス

  • list_pop_front

array_pop_back

末尾要素を除いた配列を返します。

array_pop_back(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_pop_back([1, 2, 3]);
+-------------------------------+
| array_pop_back(List([1,2,3])) |
+-------------------------------+
| [1, 2]                        |
+-------------------------------+

エイリアス

  • list_pop_back

array_position

配列内で指定した要素が最初に現れる位置を返します。

array_position(array, element)
array_position(array, element, index)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列内で位置を探す要素。
  • index: 検索を開始するインデックス。

> select array_position([1, 2, 2, 3, 1, 4], 2);
+----------------------------------------------+
| array_position(List([1,2,2,3,1,4]),Int64(2)) |
+----------------------------------------------+
| 2                                            |
+----------------------------------------------+

エイリアス

  • array_indexof
  • list_indexof
  • list_position

array_positions

配列内の要素を検索し、出現位置をすべて返します。

array_positions(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列内で位置を探す要素。

> select array_positions([1, 2, 2, 3, 1, 4], 2);
+-----------------------------------------------+
| array_positions(List([1,2,2,3,1,4]),Int64(2)) |
+-----------------------------------------------+
| [2, 3]                                        |
+-----------------------------------------------+

エイリアス

  • list_positions

array_push_back

array_append のエイリアスです。

array_push_front

array_prepend のエイリアスです。

array_repeat

要素を count 回含む配列を返します。

array_repeat(element, count)

引数

  • element: 要素の式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • count: 要素を繰り返す回数。

> select array_repeat(1, 3);
+---------------------------------+
| array_repeat(Int64(1),Int64(3)) |
+---------------------------------+
| [1, 1, 1]                       |
+---------------------------------+
> select array_repeat([1, 2], 2);
+------------------------------------+
| array_repeat(List([1,2]),Int64(2)) |
+------------------------------------+
| [[1, 2], [1, 2]]                   |
+------------------------------------+

エイリアス

  • list_repeat

array_remove

指定した値と等しい最初の要素を配列から削除します。

array_remove(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列から削除する要素。

> select array_remove([1, 2, 2, 3, 2, 1, 4], 2);
+----------------------------------------------+
| array_remove(List([1,2,2,3,2,1,4]),Int64(2)) |
+----------------------------------------------+
| [1, 2, 3, 2, 1, 4]                           |
+----------------------------------------------+

エイリアス

  • list_remove

array_remove_n

指定した値と等しい最初の max 個の要素を配列から削除します。

array_remove_n(array, element, max)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列から削除する要素。
  • max: 削除する最初の出現回数。

> select array_remove_n([1, 2, 2, 3, 2, 1, 4], 2, 2);
+---------------------------------------------------------+
| array_remove_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(2)) |
+---------------------------------------------------------+
| [1, 3, 2, 1, 4]                                         |
+---------------------------------------------------------+

エイリアス

  • list_remove_n

array_remove_all

指定した値と等しい要素を配列からすべて削除します。

array_remove_all(array, element)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • element: 配列から削除する要素。

> select array_remove_all([1, 2, 2, 3, 2, 1, 4], 2);
+--------------------------------------------------+
| array_remove_all(List([1,2,2,3,2,1,4]),Int64(2)) |
+--------------------------------------------------+
| [1, 3, 1, 4]                                     |
+--------------------------------------------------+

エイリアス

  • list_remove_all

array_replace

指定した要素の最初の出現を、別の指定した要素に置き換えます。

array_replace(array, from, to)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • from: 置き換え元の要素。
  • to: 置き換え先の要素。

> select array_replace([1, 2, 2, 3, 2, 1, 4], 2, 5);
+--------------------------------------------------------+
| array_replace(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
+--------------------------------------------------------+
| [1, 5, 2, 3, 2, 1, 4]                                  |
+--------------------------------------------------------+

エイリアス

  • list_replace

array_replace_n

指定した要素の最初の max 回の出現を、別の指定した要素に置き換えます。

array_replace_n(array, from, to, max)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • from: 置き換え元の要素。
  • to: 置き換え先の要素。
  • max: 置き換える最初の出現回数。

> select array_replace_n([1, 2, 2, 3, 2, 1, 4], 2, 5, 2);
+-------------------------------------------------------------------+
| array_replace_n(List([1,2,2,3,2,1,4]),Int64(2),Int64(5),Int64(2)) |
+-------------------------------------------------------------------+
| [1, 5, 5, 3, 2, 1, 4]                                             |
+-------------------------------------------------------------------+

エイリアス

  • list_replace_n

array_replace_all

指定した要素のすべての出現を、別の指定した要素に置き換えます。

array_replace_all(array, from, to)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • from: 置き換え元の要素。
  • to: 置き換え先の要素。

> select array_replace_all([1, 2, 2, 3, 2, 1, 4], 2, 5);
+------------------------------------------------------------+
| array_replace_all(List([1,2,2,3,2,1,4]),Int64(2),Int64(5)) |
+------------------------------------------------------------+
| [1, 5, 5, 3, 5, 1, 4]                                      |
+------------------------------------------------------------+

エイリアス

  • list_replace_all

array_reverse

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

array_reverse(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_reverse([1, 2, 3, 4]);
+------------------------------------------------------------+
| array_reverse(List([1, 2, 3, 4]))                          |
+------------------------------------------------------------+
| [4, 3, 2, 1]                                               |
+------------------------------------------------------------+

エイリアス

  • list_reverse

array_slice

1 始まりの開始位置と終了位置に基づく配列のスライスを返します。

array_slice(array, begin, end)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • begin: 最初の要素のインデックス。 負の値の場合は、配列の末尾から数えます。
  • end: 最後の要素のインデックス。 負の値の場合は、配列の末尾から数えます。
  • stride: 配列スライスのストライド。デフォルトは 1 です。

> select array_slice([1, 2, 3, 4, 5, 6, 7, 8], 3, 6);
+--------------------------------------------------------+
| array_slice(List([1,2,3,4,5,6,7,8]),Int64(3),Int64(6)) |
+--------------------------------------------------------+
| [3, 4, 5, 6]                                           |
+--------------------------------------------------------+

エイリアス

  • list_slice

array_to_string

各要素をテキスト表現へ変換します。

array_to_string(array, delimiter)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • delimiter: 配列要素の区切り文字。

> select array_to_string([[1, 2, 3, 4], [5, 6, 7, 8]], ',');
+----------------------------------------------------+
| array_to_string(List([1,2,3,4,5,6,7,8]),Utf8(",")) |
+----------------------------------------------------+
| 1,2,3,4,5,6,7,8                                    |
+----------------------------------------------------+

エイリアス

  • array_join
  • list_join
  • list_to_string

array_union

両方の配列に存在する要素(両方の配列のすべての要素)を、重複なしで含む配列を返します。

array_union(array1, array2)

引数

  • array1: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • array2: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_union([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_union([1, 2, 3, 4], [5, 6, 3, 4]);           |
+----------------------------------------------------+
| [1, 2, 3, 4, 5, 6]                                 |
+----------------------------------------------------+
> select array_union([1, 2, 3, 4], [5, 6, 7, 8]);
+----------------------------------------------------+
| array_union([1, 2, 3, 4], [5, 6, 7, 8]);           |
+----------------------------------------------------+
| [1, 2, 3, 4, 5, 6, 7, 8]                           |
+----------------------------------------------------+

エイリアス

  • list_union

array_except

最初の配列にはあるが、2 番目の配列にはない要素からなる配列を返します。

array_except(array1, array2)

引数

  • array1: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • array2: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select array_except([1, 2, 3, 4], [5, 6, 3, 4]);
+----------------------------------------------------+
| array_except([1, 2, 3, 4], [5, 6, 3, 4]);           |
+----------------------------------------------------+
| [1, 2]                                 |
+----------------------------------------------------+
> select array_except([1, 2, 3, 4], [3, 4, 5, 6]);
+----------------------------------------------------+
| array_except([1, 2, 3, 4], [3, 4, 5, 6]);           |
+----------------------------------------------------+
| [1, 2]                                 |
+----------------------------------------------------+

エイリアス

  • list_except

cardinality

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

cardinality(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select cardinality([[1, 2, 3, 4], [5, 6, 7, 8]]);
+--------------------------------------+
| cardinality(List([1,2,3,4,5,6,7,8])) |
+--------------------------------------+
| 8                                    |
+--------------------------------------+

empty

空の配列なら 1、空でない配列なら 0 を返します。

empty(array)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。

> select empty([1]);
+------------------+
| empty(List([1])) |
+------------------+
| 0                |
+------------------+

エイリアス

  • array_empty,
  • list_empty

generate_series

range 関数に似ていますが、上限を含みます。

generate_series(start, stop, step)

引数

  • start: 範囲の開始
  • end: 範囲の終了(含む)
  • step: 増分(0 にはできません)

> select generate_series(1,3);
+------------------------------------+
| generate_series(Int64(1),Int64(3)) |
+------------------------------------+
| [1, 2, 3]                          |
+------------------------------------+

list_append

array_append のエイリアスです。

list_cat

array_concat のエイリアスです。

list_concat

array_concat のエイリアスです。

list_dims

array_dims のエイリアスです。

list_distinct

array_dims のエイリアスです。

list_element

array_element のエイリアスです。

list_empty

empty のエイリアスです。

list_except

array_element のエイリアスです。

list_extract

array_element のエイリアスです。

list_has

array_has のエイリアスです。

list_has_all

array_has_all のエイリアスです。

list_has_any

array_has_any のエイリアスです。

list_indexof

array_position のエイリアスです。

list_intersect

array_position のエイリアスです。

list_join

array_to_string のエイリアスです。

list_length

array_length のエイリアスです。

list_ndims

array_ndims のエイリアスです。

list_prepend

array_prepend のエイリアスです。

list_pop_back

array_pop_back のエイリアスです。

list_pop_front

array_pop_front のエイリアスです。

list_position

array_position のエイリアスです。

list_positions

array_positions のエイリアスです。

list_push_back

array_append のエイリアスです。

list_push_front

array_prepend のエイリアスです。

list_repeat

array_repeat のエイリアスです。

list_resize

array_resize のエイリアスです。

list_remove

array_remove のエイリアスです。

list_remove_n

array_remove_n のエイリアスです。

list_remove_all

array_remove_all のエイリアスです。

list_replace

array_replace のエイリアスです。

list_replace_n

array_replace_n のエイリアスです。

list_replace_all

array_replace_all のエイリアスです。

list_reverse

array_reverse のエイリアスです。

list_slice

array_slice のエイリアスです。

list_sort

array_sort のエイリアスです。

list_to_string

array_to_string のエイリアスです。

list_union

array_union のエイリアスです。

make_array

指定した入力式から Arrow 配列を返します。

make_array(expression1[, ..., expression_n])

array_empty

empty のエイリアスです。

引数

  • expression_n: 出力配列に含める式。 定数、列、関数、および算術演算子や文字列演算子の任意の組み合わせを使えます。

> select make_array(1, 2, 3, 4, 5);
+----------------------------------------------------------+
| make_array(Int64(1),Int64(2),Int64(3),Int64(4),Int64(5)) |
+----------------------------------------------------------+
| [1, 2, 3, 4, 5]                                          |
+----------------------------------------------------------+

エイリアス

  • make_list

make_list

make_array のエイリアスです。

string_to_array

区切り文字に基づいて文字列を部分文字列の配列へ分割します。省略可能な null_str 引数に一致する部分文字列は NULL に置き換えられます。 SELECT string_to_array('abc##def', '##') または SELECT string_to_array('abc def', ' ', 'def')

starts_with(str, delimiter[, null_str])

引数

  • str: 分割する文字列式。
  • delimiter: 分割に使う区切り文字列。
  • null_str: NULL に置き換える部分文字列。

エイリアス

  • string_to_list

string_to_list

string_to_array のエイリアスです。

trim_array

配列から末尾の n 個の要素を削除します。

非推奨: 代わりに array_slice を使ってください。

trim_array(array, n)

引数

  • array: 配列式。 定数、列、関数、および配列演算子の任意の組み合わせを使えます。
  • n: 配列から削る要素数。

range

start から stop まで、step 刻みの Arrow 配列を返します。SELECT range(2, 10, 3) -> [2, 5, 8] または SELECT range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH);

範囲 start..end には、start <= x < end を満たすすべての値が含まれます。start >= end の場合は空です。

step は 0 にできません(その場合、範囲は意味を持ちません)。

必要な範囲が数値のときは、(stop)、(start, stop)、(start, stop, step) をパラメーターとして受け付けます。日付の範囲では、NULL でない 3 つのパラメーターが必要です。 たとえば、

SELECT range(3);
SELECT range(1,5);
SELECT range(1,5,1);

は数値範囲では使えますが、日付範囲では

SELECT range(DATE '1992-09-01', DATE '1993-03-01', INTERVAL '1' MONTH);

だけが使え、

SELECT range(DATE '1992-09-01', DATE '1993-03-01', NULL);
SELECT range(NULL, DATE '1993-03-01', INTERVAL '1' MONTH);
SELECT range(DATE '1992-09-01', NULL, INTERVAL '1' MONTH);

は使えません。

引数

  • start: 範囲の開始
  • end: 範囲の終了(含まない)
  • step: 増分(0 にはできません)

エイリアス

  • generate_series

役に立ちましたか?