配列関数
array
導入バージョン: v1.1
関数の引数から配列を作成します。
引数は定数であり、共通のスーパータイプを持つ型でなければなりません。
少なくとも 1 つの引数を渡す必要があります。そうしないと、どの型の配列を作成するかが明確になりません。
つまり、この関数を使用して空の配列を作成することはできません。空の配列を作成するには、emptyArray* 関数を使用してください。
同様の機能には [ ] 演算子を使用できます。
構文
引数
x1— 任意の型 T の定数値。この引数だけが指定された場合、配列の型は T になります。[, x2, ..., xN]—x1と共通のスーパータイプを持つ、追加の N 個の定数値。
返される値
渡された引数から求められる最小の共通型 T を要素型とする配列を返します。Array(T)
例
有効な使用例
無効な使い方
arrayAUCPR
導入バージョン: v20.4
適合率–再現率 (PR) 曲線の下側の面積を計算します。 適合率–再現率 (PR) 曲線は、すべてのしきい値について、縦軸に適合率、横軸に再現率をプロットすることで作成します。 得られる値は 0 から 1 の範囲を取り、値が大きいほどモデルの性能が高いことを示します。 PR AUC は不均衡なデータセットに対して特に有用であり、そのようなケースでは ROC AUC と比べて性能をより明確に比較できます。 詳細については こちら、こちら、および こちら を参照してください。
構文
別名: arrayPRAUC
引数
cores— 予測モデルが出力するスコア値。Array((U)Int*)またはArray(Float*)labels— サンプルのラベル。通常、正例には 1、負例には 0 を指定します。Array((U)Int*)またはArray(Enum)partial_offsets—- 省略可能。PR 曲線全体の AUC ではなく、PR 曲線の一部の面積(PR 空間の縦方向の帯域に相当)を計算するための、3 つの非負整数からなる
Array(T)。このオプションは PR AUC の分散計算に便利です。配列には次の要素を含める必要があります:[higher_partitions_tp,higher_partitions_fp,total_positives]。higher_partitions_tp: より高いスコアのパーティション内の正例ラベル数。higher_partitions_fp: より高いスコアのパーティション内の負例ラベル数。total_positives: データセット全体における正例サンプルの総数。
arr_partial_offsets を使用する場合、arr_scores と arr_labels には、スコアのある区間を含むデータセット全体のうちの 1 つのパーティションだけを含める必要があります。
データセットは連続したパーティションに分割し、各パーティションにはスコアが特定の範囲に入るデータのサブセットを含める必要があります。
例えば次のようになります:
- あるパーティションには [0, 0.5) の範囲のすべてのスコアを含める。
- 別のパーティションには [0.5, 1.0] の範囲のスコアを含める。
返される値
適合率–再現率 (PR) 曲線の下の面積を返します。Float64
例
使用例
arrayAll
導入バージョン: v1.1
ラムダ func(x [, y1, y2, ... yN]) がすべての要素に対して true を返す場合は 1 を返し、そうでない場合は 0 を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)cond1_arr, ...— 省略可能。ラムダ関数に追加の引数を渡すための N 個の条件配列。Array(T)
戻り値
ラムダ関数がすべての要素に対して true を返す場合は 1、それ以外の場合は 0 を返します。UInt8
例
すべての要素が一致する
すべての要素が一致しているとは限りません
arrayAvg
導入バージョン: v21.1
配列の要素の平均値を返します。
ラムダ関数 func が指定された場合は、そのラムダの適用結果の要素の平均値を返します。
構文
引数
func(x[, y1, ..., yN])— 省略可。ソース配列(x)および条件配列(y)の要素を処理するラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可。ラムダ関数に追加の引数を与えるための N 個の条件配列。Array(T)
返される値
ソース配列内の要素の平均値、またはラムダ関数が指定されている場合はその結果要素の平均値を返します。Float64
例
基本的な例
lambda 関数での利用方法
arrayCompact
導入バージョン: v20.1
配列から連続する重複要素(null 値も含む)を削除します。結果の配列内の値の順序は、元の配列内での順序に従います。
構文
引数
arr— 重複を削除する対象の配列。Array(T)
戻り値
重複を取り除いた配列を返します。Array(T)
例
使用例
arrayConcat
導入バージョン: v1.1
引数として渡された配列を結合します。
構文
引数
arr1 [, arr2, ... , arrN]— 連結する N 個の配列です。Array(T)
返される値
指定された配列引数を結合した 1 つの配列を返します。Array(T)
例
使用例
arrayCount
導入バージョン: v1.1
func(arr1[i], ..., arrN[i]) が true を返す要素の数を返します。
func が指定されていない場合、配列内のゼロ以外の要素の数を返します。
arrayCount は高階関数です。
構文
引数
func— 省略可能。配列の各要素に適用する関数。Lambda functionarr1, ..., arrN— N 個の配列。Array(T)
返される値
func が true を返す要素数を返します。指定されていない場合は、配列内の 0 以外の要素数を返します。UInt32
例
使用例
arrayCumSum
導入バージョン: v1.1
元の配列の要素に対する部分和(累積和)からなる配列を返します。lambda 関数が指定されている場合、各位置の配列要素に lambda を適用した結果について和が計算されます。
構文
引数
func— 省略可。各位置の配列要素に適用されるラムダ関数。Lambda functionarr1— 数値を要素とする元の配列。Array(T)[arr2, ..., arrN]— 省略可。同じサイズの追加配列で、指定されている場合はラムダ関数への引数として渡されます。Array(T)
返される値
元の配列内の要素について、その部分和を要素とする配列を返します。結果の型は入力配列の要素の数値型と一致します。Array(T)
使用例
基本的な使い方
ラムダあり
arrayCumSumNonNegative
導入されたバージョン: v18.12
元の配列の要素について、累積部分和(ランニングサム)の配列を返し、累積和が負になった場合はゼロに置き換えます。ラムダ関数が指定されている場合は、各位置の配列要素にラムダを適用した結果に対して和が計算されます。
構文
引数
func— 省略可能。各位置の配列要素に適用するラムダ関数です。Lambda functionarr1— 数値を要素とする元の配列。Array(T)[arr2, ..., arrN]— 省略可能。同じサイズの追加の配列。指定されている場合、ラムダ関数への引数として渡されます。Array(T)
返される値
元の配列内の要素の部分和からなる配列を返します。このとき、累積和が負の値になった場合は 0 に置き換えられます。結果の型は入力配列の数値型と一致します。Array(T)
例
基本的な使い方
ラムダ使用時
arrayDifference
導入バージョン: v1.1
配列内の隣接する要素同士の差分から成る配列を返します。
結果の配列の最初の要素は 0、2 番目は arr[1] - arr[0]、3 番目は arr[2] - arr[1] というように続きます。
結果の配列内の要素の型は減算に関する型推論ルールによって決定されます(例: UInt8 - UInt8 = Int16)。
構文
引数
arr— 配列の隣接要素間の差分を計算する対象の配列。Array(T)
返り値
配列の隣接要素間の差分を要素とする配列を返します。型は UInt*
例
使用例
結果型が Int64 の場合のオーバーフロー例
arrayDistinct
導入バージョン: v1.1
配列から重複した要素を取り除いた配列を返します。
構文
引数
arr— 重複しない要素を抽出する対象の配列。Array(T)
戻り値
重複しない要素のみを含む配列を返します。Array(T)
例
使用例
arrayDotProduct
導入バージョン: v23.5
2つの配列の内積を返します。
2つのベクトルのサイズは等しくなければなりません。Array および Tuple には、異なる型の要素を混在させることもできます。
構文
引数
v1— 1つ目のベクトル。Array((U)Int* | Float* | Decimal)またはTuple((U)Int* | Float* | Decimal)v2— 2つ目のベクトル。Array((U)Int* | Float* | Decimal)またはTuple((U)Int* | Float* | Decimal)
返される値
2つのベクトルのドット積を返します。
戻り値の型は引数の型によって決まります。Array または Tuple に要素型が混在している場合、結果の型はそれらのスーパータイプになります。
(U)Int* または Float* または Decimal
例
Array の例
タプルの例
arrayElement
導入バージョン: v1.1
n を任意の整数型として、指定された配列のインデックス n の要素を取得します。
インデックスが配列の範囲外の場合は、デフォルト値(数値は 0、文字列は空文字列など)を返します。
ただし、配列引数が非定数で、インデックスに定数 0 を指定した場合は例外で、この場合は Array indices are 1-based というエラーが発生します。
ClickHouse の配列はインデックスが 1 始まりです。
負のインデックスもサポートされています。この場合、末尾から数えた要素が選択されます。たとえば、arr[-1] は配列の最後の要素です。
演算子 [n] は同じ機能を提供します。
構文
引数
返り値
指定された配列引数から結合された単一の配列を返します。Array(T)。
例
使用例
負のインデックス
[n] 記法の使用
配列範囲外のインデックス
arrayElementOrNull
導入バージョン: v1.1
指定された配列の、インデックス n の要素を取得します。n には任意の整数型を指定できます。
インデックスが配列の範囲外の場合、デフォルト値ではなく NULL が返されます。
ClickHouse の配列のインデックスは 1 始まりです。
負のインデックスもサポートされています。この場合、末尾から数えた位置に対応する要素が選択されます。例えば、arr[-1] は配列の最後の要素です。
構文
引数
arrays— 任意の数の配列引数。Array
戻り値
渡された配列引数を結合し、1 つの配列として返します。Array(T)
例
使用例
負のインデックス
配列範囲外の添字
arrayEnumerate
導入バージョン: v1.1
配列 [1, 2, 3, ..., length (arr)] を返します。
この関数は通常、ARRAY JOIN 句と一緒に使用します。ARRAY JOIN を適用した後に、各配列ごとに 1 回だけ集計を行えるようにします。
この関数は高階関数でも使用できます。たとえば、ある条件に一致する要素の配列内インデックスを取得するために使用できます。
構文
引数
arr— 列挙する配列。Array
返り値
配列 [1, 2, 3, ..., length(arr)] を返します。Array(UInt32)
例
ARRAY JOIN を使用した基本的な例
arrayEnumerateDense
導入バージョン: v18.12
元の配列と同じサイズの配列を返します。各要素は、元の配列内でその要素が最初に出現する位置を表します。
構文
引数
arr— 列挙する配列。Array(T)
返り値
arr と同じサイズの配列を返します。各要素について、その要素が元の配列 Array(T) 内で最初に出現する位置を示します。
例
使用例
arrayEnumerateDenseRanked
導入バージョン: v20.1
元の配列と同じサイズの配列を返し、元の配列内で各要素が最初に出現する位置を示します。多次元配列を列挙する際に、配列のどの深さまでたどるかを指定できます。
構文
引数
clear_depth— 指定したレベルの要素を個別に列挙します。max_arr_depth以下でなければなりません。UInt*arr— 列挙対象の N 次元の配列。Array(T)max_array_depth— 有効な最大深さ。arrの深さ以下でなければなりません。UInt*
戻り値
各要素が元の配列内で最初に出現する位置を示す配列を返します。Array
例
基本的な使い方
多次元配列での使用
clear_depth を増加させた例
arrayEnumerateUniq
導入バージョン: v1.1
元の配列と同じ長さの配列を返し、各要素について、その値を持つ要素群の中での出現順序を示します。
この関数は、ARRAY JOIN と配列要素の集約を行う際に有用です。
この関数は、同じ長さの複数の配列を引数として受け取ることができます。この場合、一意性は、すべての配列で同じ位置にある要素からなるタプル単位で判定されます。
構文
引数
arr1— 処理対象となる最初の配列。Array(T)arr2, ...— オプション。同じサイズの、タプルの一意性判定に使用する追加の配列。Array(UInt32)
返り値
各要素が、同じ値またはタプルを持つ要素同士の中での位置(順位)を表す配列を返します。 Array(T)
使用例
基本的な使い方
複数の配列
ARRAY JOIN を用いた集約
arrayEnumerateUniqRanked
導入バージョン: v20.1
元の配列と同じ次元を持つ配列(または多次元配列)を返します。 各要素について、その要素と同じ値を持つ要素の中での位置を示します。 多次元配列を列挙する際に、配列のどの深さまで処理するかを指定できます。
構文
引数
clear_depth— 指定したレベルの要素を個別に列挙します。max_arr_depth以下の正の整数。UInt*arr— 列挙対象の N 次元配列。Array(T)max_array_depth— 有効な最大の深さ。arrの深さ以下の正の整数。UInt*
返される値
arr と同じサイズの N 次元配列を返し、各要素には、同じ値を持つ要素同士の中でのその要素の位置が示されます。Array(T)
例
例 1
例2
例3
例4
arrayExcept
導入: v25.9
except に存在しない source の要素だけを、元の順序を保った配列として返します。
この関数は、2 つの配列の差集合演算を実行します。source の各要素について、その要素が except に存在するか(厳密な比較を用いて)確認します。存在しない場合、その要素は結果に含まれます。
この演算は次の性質を持ちます:
sourceにおける要素の順序は保持されるexceptに存在しない場合、source内の重複要素は保持される- NULL は別個の値として扱われる
構文
引数
返される値
入力配列と同じ型で、source のうち except に含まれない要素だけを含む配列を返します。 Array(T)
例
基本例
with_nulls1
with_nulls2
文字列
arrayExists
導入: v1.1
ソース配列内に、func(x[, y1, y2, ... yN]) が true を返す要素が 1 つ以上存在する場合は 1 を返します。存在しない場合は 0 を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
戻り値
少なくとも 1 つの要素でラムダ関数が true を返した場合は 1 を、そうでない場合は 0 を返します。UInt8
例
使用例
arrayFill
導入バージョン: v20.1
arrayFill 関数は、ソース配列を最初の要素から最後の要素まで順に処理し、
ソース配列および条件配列の要素を用いて、各位置でラムダ条件を評価します。
位置 i においてラムダ関数の評価結果が false を返した場合、その要素は、
配列の現在の状態における位置 i-1 の要素で置き換えられます。
最初の要素は、条件に関わらず常にそのまま保持されます。
構文
引数
func(x [, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])。Lambda functionsource_arr— 処理対象となるソース配列。Lambda function[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
返される値
配列 Array(T) を返します。
例
単一配列の例
2つの配列を使用した例
arrayFilter
導入: v1.1
ソース配列の各要素にラムダ関数を適用し、その結果が true を返す要素だけを含む配列を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素を処理するラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— オプション。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
戻り値
ソース配列の一部(サブセット)を返します。Array(T)
例
例 1
例 2
arrayFirst
導入: v1.1
func(x[, y1, y2, ... yN]) が true を返すソース配列内の最初の要素を返します。該当する要素がない場合はデフォルト値を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に適用されるラムダ関数。ラムダ関数。 -source_arr— 処理対象のソース配列。Array(T)。 -[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数として渡す N 個の条件配列。Array(T)。
戻り値
λ が真となる最初のソース配列要素を返し、該当する要素がない場合は T 型のデフォルト値を返します。
例
使用例
一致なし
arrayFirstIndex
導入バージョン: v1.1
func(x[, y1, y2, ... yN]) が true を返す最初の要素の索引を元の配列の中から返し、該当する要素がない場合は '0' を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象となるソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可。ラムダ関数に追加の引数を渡すための N 個の条件配列。Array(T)
返される値
func が true を返すソース配列の最初の要素のインデックスを返し、それ以外の場合は 0 を返します。UInt32
例
使用例
一致なし
arrayFirstOrNull
導入バージョン: v1.1
func(x[, y1, y2, ... yN]) が true を返すソース配列内の最初の要素を返します。該当する要素がない場合は NULL を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象となるソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
戻り値
func が true となるソース配列の最初の要素を返し、それ以外の場合は NULL を返します。
例
使用例
一致するものがありません
arrayFlatten
導入バージョン: v20.1
配列の配列をフラットな配列に変換します。
関数:
- 任意の深さにネストされた配列に適用できます。
- すでにフラットな配列は変更しません。
フラット化された配列には、元のすべての配列に含まれる要素がすべて含まれます。
構文
エイリアス: flatten
引数
arr— 多次元配列。Array(Array(T))
返り値
多次元配列を平坦化した配列 Array(T) を返します。
例
使用例
arrayFold
導入バージョン: v23.10
1 つ以上の同じ長さの配列にラムダ関数を適用し、その結果をアキュムレータに蓄積します。
構文
引数
λ(x, x1 [, x2, x3, ... xN])— ラムダ関数λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])。ここでFは、accとxからの配列要素に適用される演算であり、その結果が次回以降のaccとして再利用されます。Lambda functionarr1 [, arr2, arr3, ... arrN]— 演算対象となる N 個の配列。Array(T)acc— 累積値。ラムダ関数の戻り値と同じ型を持ちます。
戻り値
最終的な acc の値を返します。
例
使用例
フィボナッチ数列
複数の配列を使用する例
arrayIntersect
導入バージョン: v1.1
複数の配列を引数に取り、すべての入力配列に存在する要素からなる配列を返します。結果には一意の値のみが含まれます。
構文
引数
arrN— 新しい配列を作成するための N 個の配列。Array(T)。
返される値
N 個すべての配列に含まれる要素だけからなる重複のない配列を返します。Array(T)。
例
使用例
arrayJaccardIndex
導入バージョン: v23.7
2つの配列の Jaccard指数 を返します。
構文
引数
戻り値
arr_x と arr_y の Jaccard 指数を返します。Float64
例
使用例
arrayJoin
導入バージョン: v1.1
arrayJoin 関数は、配列を含む行を入力として受け取り、それを展開して複数の行を生成します — 配列内の各要素ごとに 1 行ずつ生成されます。
これは、同じ行の中で入力値を出力値に対応付ける ClickHouse の通常の関数や、
複数の行を 1 つの要約行(GROUP BY と併用した場合は要約行内の 1 つの値)に「圧縮」または「集約」する集約関数とは対照的です。
この関数が適用されるカラム以外のすべてのカラムの値は、そのまま単純にコピーされます。 該当カラムの値だけが、対応する配列要素の値に置き換えられます。
構文
引数
arr— 展開する配列。Array(T)
戻り値
arr から展開された行の集合を返します。
例
基本的な使い方
arrayJoin はクエリのすべての句に影響します
複数の arrayJoin 関数の併用
最適化による予期せぬ結果
ARRAY JOIN 構文の使い方
Tuple の使用
arrayLast
導入バージョン: v1.1
ソース配列の要素のうち、ラムダ func(x [, y1, y2, ... yN]) が true を返す最後の要素を返します。該当する要素がない場合は、デフォルト値を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素に対して動作するラムダ関数。Lambda function
戻り値
func が true になるソース配列の最後の要素を返します。それ以外の場合は T のデフォルト値を返します。
例
使用例
一致なし
arrayLastIndex
導入バージョン: v1.1
func(x[, y1, y2, ... yN]) が true を返す、元の配列内で最後に現れる要素の索引を返します。該当する要素がない場合は '0' を返します。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素を処理するラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
返される値
func が true になるソース配列の最後の要素のインデックスを返し、該当する要素がない場合は 0 を返す。UInt32
例
使用例
一致する要素なし
arrayLastOrNull
導入: v1.1
ラムダ式 func(x [, y1, y2, ... yN]) が true を返す、入力配列の要素のうち最後のものを返します。該当する要素がない場合は NULL を返します。
構文
引数
func(x [, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素を処理するラムダ関数。ラムダ関数
戻り値
λ が真ではないソース配列の最後の要素を返し、それ以外の場合は NULL を返します。
例
使用例
一致なし
arrayLevenshteinDistance
導入バージョン: v25.4
2つの配列間のレーベンシュタイン距離を計算します。
構文
引数
戻り値
1番目と2番目の配列間の Levenshtein 距離。Float64
例
使用例
arrayLevenshteinDistanceWeighted
導入: v25.4
2つの配列に対して、各要素ごとに任意の重みを指定して Levenshtein 距離を計算します。 配列と重み配列の要素数は一致している必要があります。
構文
引数
from— 第 1 配列。Array(T). -to— 第 2 配列。Array(T). -from_weights— 第 1 配列に対する重み。Array((U)Int*|Float*)to_weights— 第 2 配列に対する重み。Array((U)Int*|Float*)
戻り値
各要素に対するカスタムの重みを用いた、第 1 配列と第 2 配列間の Levenshtein 距離。Float64
例
使用例
arrayMap
導入バージョン: v1.1
元の配列の各要素にラムダ関数を適用した結果の配列を返します。
構文
引数
func— ソース配列(x)および条件配列(y)の要素を操作するラムダ関数。Lambda functionarr— 処理対象となる N 個の配列。Array(T)
返される値
ラムダ関数の結果から生成される配列を返します。Array(T)
例
使用例
異なる配列から要素のタプルを生成する
arrayMax
導入バージョン: v21.1
入力配列の最大の要素を返します。
ラムダ関数 func が指定されている場合は、そのラムダの結果の中で最大の要素を返します。
構文
引数
func(x[, y1, ..., yN])— 省略可能。ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象となるソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
戻り値
ソース配列内の最大要素、またはラムダ関数が指定されている場合はラムダ関数の結果の最大要素を返します。
例
基本例
lambda 関数との併用
arrayMin
導入: v21.1
ソース配列の最小要素を返します。
ラムダ関数 func が指定されている場合は、ラムダの結果の最小要素を返します。
構文
引数
func(x[, y1, ..., yN])— 省略可。ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象となるソース配列。Array(T)cond1_arr, ...— 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
返される値
ソース配列内の最小要素、またはラムダ関数が指定されている場合は、その結果の最小要素を返します。
例
基本的な例
Lambda 関数での使用
arrayNormalizedGini
導入バージョン: v25.1
正規化ジニ係数を計算します。
構文
引数
戻り値
予測値のGini係数、正規化された値のGini係数、および正規化Gini係数(=前者2つのGini係数の比)を含むタプル。Tuple(Float64, Float64, Float64)
例
使用例
arrayPartialReverseSort
導入バージョン: v23.2
この関数は arrayReverseSort と同じですが、追加の引数 limit により部分的なソートが可能です。
ソートされた要素だけを保持したい場合は arrayResize を使用してください。
構文
引数
f(arr[, arr1, ... ,arrN])— 配列xの要素に適用するラムダ関数。Lambda functionarr— ソート対象の配列。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合の、追加の N 個の配列。Array(T)limit— どこまでソートを行うかを示すインデックス値。(U)Int*
戻り値
元の配列と同じサイズの配列を返します。範囲 [1..limit] にある要素は降順にソートされます。
残りの要素 (limit..N] にある要素の順序は未定義です。
例
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPartialShuffle
導入バージョン: v23.2
元の配列と同じサイズの配列を返します。このとき、範囲 [1..limit] の要素は元の配列からランダムに選ばれた部分集合になります。残りの (limit..n] の位置には、[1..limit] の範囲に含まれない要素が未定義の順序で格納されます。
limit の値は [1..n] の範囲でなければなりません。この範囲外の値は、完全な arrayShuffle を実行するのと同等です。
構文
引数
arr— シャッフルする配列。Array(T)seed— オプション。乱数生成に使用するシード。指定しない場合はランダムなものが使用されます。(U)Int*limit— オプション。要素の交換回数の上限を[1..N]の範囲で指定します。(U)Int*
戻り値
要素が部分的にシャッフルされた配列。Array(T)
例
no_limit1
no_limit2
random_seed
explicit_seed
materialize
arrayPartialSort
導入バージョン: v23.2
この関数は arraySort と同様ですが、ソートする要素数を制限するための追加引数 limit を受け取ります。
ソートされた要素のみを残したい場合は arrayResize を使用します。
構文
引数
f(arr[, arr1, ... ,arrN])— 配列xの要素に適用されるラムダ関数。Lambda functionarr— ソート対象の配列。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合の、追加の N 個の配列。Array(T)limit— ソートが行われる上限となるインデックス値。(U)Int*
返される値
元の配列と同じサイズの配列を返します。範囲 [1..limit] にある要素は昇順にソートされます。残りの要素 (limit..N] の順序は未定義です。
使用例
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPopBack
導入バージョン: v1.1
配列の末尾の要素を削除します。
構文
引数
arr— 最後の要素を取り除く対象の配列。Array(T)
返り値
arr と同じですが、arr の最後の要素を含まない配列を返します。Array(T)
例
使用例
arrayPopFront
導入バージョン: v1.1
配列の先頭要素を削除します。
構文
引数
arr— 先頭要素を削除する対象の配列。Array(T)
戻り値
arr と同一だが、先頭要素を除いた配列を返します。Array(T)
例
使用例
arrayProduct
導入バージョン: v21.1
入力配列内の要素の積を返します。
ラムダ関数 func が指定されている場合は、そのラムダの結果要素の積を返します。
構文
引数
func(x[, y1, ..., yN])— オプション。ソース配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— オプション。ラムダ関数に追加の引数を渡すための N 個の条件配列。Array(T)
返される値
ソース配列内の要素の積、またはラムダ関数が指定されている場合はその結果要素の積を返します。Float64
例
基本的な例
ラムダ関数での使用方法
arrayPushBack
導入バージョン: v1.1
配列の末尾に要素を 1 つ追加します。
構文
引数
- 数値の配列には数値のみ、文字列の配列には文字列のみを追加できます。
- 数値を追加する場合、ClickHouse は配列のデータ型に合わせて
xの型を自動的に決定します。 NULLを指定できます。この関数は配列にNULL要素を追加し、配列要素の型はNullableに変換されます。
ClickHouse のデータ型の詳細については、データ型 を参照してください。
返される値
arr と同一だが、配列の末尾に値 x が 1 要素追加された配列 Array(T) を返します。
例
使用例
arrayPushFront
導入: v1.1
配列の先頭に要素を 1 つ追加します。
構文
引数
- 数値配列には数値のみ、文字列配列には文字列のみを追加できます。
- 数値を追加する場合、ClickHouse は自動的に
xの型を配列のデータ型に合わせます。 NULLを指定できます。この関数は配列にNULL要素を追加し、配列要素の型をNullableに変換します。
ClickHouse におけるデータ型の詳細は、Data types を参照してください。
返り値
arr と同一だが、配列の先頭に値 x が 1 つ追加された配列(Array(T))を返します。
例
使用例
arrayROCAUC
導入バージョン: v20.4
ROC(Receiver Operating Characteristic)曲線の下の面積を計算します。 ROC 曲線は、すべてのしきい値について、縦軸に真陽性率 (TPR)、横軸に偽陽性率 (FPR) をプロットすることで作成されます。 結果の値は 0 から 1 の範囲を取り、値が大きいほどモデルの性能が高いことを示します。
ROC AUC(単に AUC とも呼ばれます)は、機械学習における概念です。 詳細については、こちら、こちら、およびこちらを参照してください。
構文
別名: arrayAUC
引数
scores— 予測モデルが出力するスコア。Array((U)Int*)またはArray(Float*)labels— サンプルのラベル。通常、正例サンプルには 1、負例サンプルには 0 を指定します。Array((U)Int*)またはEnumscale— 省略可。正規化された面積を返すかどうかを指定します。falseの場合は、TP (true positives) と FP (false positives) の曲線下の面積を返します。デフォルト値:true。Boolpartial_offsets—- ROC 曲線全体の AUC ではなく、ROC 曲線下の部分的な面積(ROC 空間の垂直バンドに相当)を計算するための、非負整数 4 要素からなる配列。このオプションは、ROC AUC の分散処理に有用です。配列には次の要素 [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives] を含める必要があります。非負の Integers の Array。省略可。higher_partitions_tp: より高いスコアを持つパーティション内の正例ラベルの数。higher_partitions_fp: より高いスコアを持つパーティション内の負例ラベルの数。total_positives: データセット全体における正例サンプルの総数。total_negatives: データセット全体における負例サンプルの総数。
arr_partial_offsets を使用する場合、arr_scores と arr_labels は、スコアのある区間を含むデータセット全体のうち 1 つのパーティションのみを表す必要があります。
データセットは連続したパーティションに分割し、各パーティションにはスコアが特定の範囲に入るデータのサブセットを含める必要があります。
例えば次のように分割できます。
- あるパーティションには範囲 [0, 0.5) のすべてのスコアを含めることができます。
- 別のパーティションには範囲 [0.5, 1.0] のスコアを含めることができます。
戻り値
受信者動作特性 (receiver operating characteristic, ROC) 曲線下の面積を返します。Float64
例
使用例
arrayRandomSample
導入バージョン: v23.10
入力配列から、samples 個のランダムな要素からなる部分集合を返します。samples が入力配列のサイズを超える場合、サンプル数は配列サイズに制限されます。つまり、すべての配列要素が返されますが、その順序は保証されません。この関数は、フラットな配列とネストされた配列の両方を処理します。
構文
引数
返される値
入力配列からランダムにサンプリングされた要素を含む配列。Array(T)
例
使用例
多次元配列の使用
arrayReduce
導入バージョン: v1.1
配列要素に集約関数を適用し、その結果を返します。
集約関数の名前は、シングルクォートで囲んだ文字列として渡します(例: 'max'、'sum')。
パラメトリックな集約関数を使用する場合は、関数名の後ろに括弧でパラメータを指定します(例: 'uniqUpTo(6)')。
構文
引数
戻り値
集約関数の結果を返します。
例
使用例
複数引数を取る集約関数の例
パラメトリック集約関数を用いた例
arrayReduceInRanges
導入バージョン: v20.4
指定された範囲内の配列要素に集約関数を適用し、各範囲に対応する結果を要素とする配列を返します。
この関数は、複数の arrayReduce(agg_func, arraySlice(arr1, index, length), ...) を実行した場合と同じ結果を返します。
構文
引数
agg_f— 使用する集約関数の名前。Stringranges— 集約を行う範囲。タプル(i, r)の配列で、開始位置となるインデックスiと、そのインデックスから集約を行う範囲rを含みます。Array(T)またはTuple(T)arr1 [, arr2, ... ,arrN)]— 集約関数への引数となる N 個の配列。Array(T)
返される値
指定された各範囲に対する集約関数の結果を含む配列を返します。Array(T)
例
使用例
arrayRemove
導入バージョン: v25.11
配列から、指定した値と等しいすべての要素を削除します。 NULL 同士は等しいものとして扱われます。
構文
別名: array_remove
引数
arr— Array(T),elem— T
戻り値
元の配列 Array(T) の部分配列を返します。
例
例 1
例 2
arrayResize
導入: v1.1
配列の長さを変更します。
構文
引数
arr— サイズを変更する配列。Array(T)size—- 配列の新しい長さ。
sizeが配列の元のサイズより小さい場合、配列は右側から切り詰められます。sizeが配列の元のサイズより大きい場合、配列は右側にextenderの値、または配列要素のデータ型のデフォルト値で拡張されます。
- 配列の新しい長さ。
extender— 配列を拡張する際に使用する値。NULLを指定できます。
戻り値
長さが size の配列。Array(T)
例
例 1
例2
arrayReverse
導入されたバージョン: v1.1
指定された配列内の要素の順序を逆にします。
関数 reverse(arr) も同じ機能を持ちますが、配列に加えて他のデータ型にも対応します。
構文
引数
arr— 反転する配列。Array(T)
戻り値
元の配列と同じサイズで、要素の順序を逆にした配列を返します。Array(T)
例
使用例
arrayReverseFill
導入バージョン: v20.1
arrayReverseFill 関数は、ソース配列を最後の要素から最初の要素へと順番に処理し、ソース配列および条件配列の要素を用いて各位置でラムダ式の条件を評価します。位置 i において条件が false と評価された場合、その要素は、その時点での配列の状態における位置 i+1 の要素で置き換えられます。最後の要素は、条件に関わらず常に保持されます。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素を処理するラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— オプション。ラムダ関数に追加の引数を渡すための N 個の条件配列。Array(T)
戻り値
ソース配列の要素をラムダ関数の結果で置き換えた配列を返す。Array(T)
例
単一の配列を用いた例
2つの配列を用いた例
arrayReverseSort
導入バージョン: v1.1
配列の要素を降順にソートします。
関数 f が指定されている場合、配列要素に関数を適用した結果に基づいて配列がソートされ、その後、そのソート結果が反転されます。
f が複数の引数を受け取る場合、arrayReverseSort 関数には複数の配列が渡され、これらが func の引数に対応します。
ソート対象の配列に -Inf、NULL、NaN、Inf が含まれている場合、次の順序でソートされます:
-InfInfNaNNULL
arrayReverseSort は高階関数です。
構文
引数
f(y1[, y2 ... yN])— 配列xの要素に適用するラムダ関数。 -arr— ソート対象の配列。Array(T)-arr1, ..., yN— 省略可能。fが複数の引数を受け取る場合に指定する、N 個の追加配列です。
戻り値
ラムダ関数が指定されていない場合は、配列 x を降順にソートした配列を返します。ラムダ関数が指定されている場合は、そのラムダ関数のロジックに従って配列をソートし、その結果を反転した配列を返します。Array(T)。
使用例
例 1
例 2
arrayReverseSplit
導入バージョン: v20.1
入力配列を複数の配列に分割します。func(x[, y1, ..., yN]) がゼロ以外を返すと、その要素の右側で配列が分割されます。末尾の要素の後では配列は分割されません。
構文
引数
func(x[, y1, ..., yN])— 元の配列(x)および条件配列(y)の要素に適用されるラムダ関数。Lambda functionsource_arr— 処理対象となる元の配列。Lambda function[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に渡す追加の引数を提供する N 個の条件配列。Array(T)
戻り値
配列の配列を返します。Array(Array(T))
例
使用例
arrayRotateLeft
導入バージョン: v23.8
指定された要素数分だけ配列を左方向に回転します。n が負の値の場合は、その絶対値分だけ右方向に回転したものとして扱われます。
構文
引数
arr— 要素を回転させる対象の配列。Array(T)。-n— 回転させる要素数。(U)Int8/16/32/64。
返される値
指定した要素数だけ左方向に回転させた配列。Array(T)
例
使用例
n が負の場合
arrayRotateRight
導入バージョン: v23.8
配列を、指定した要素数だけ右方向に回転させます。n が負の値の場合は、その絶対値分だけ左方向に回転させたものとして扱われます。
構文
引数
arr— 要素を回転させる対象の配列。Array(T)。
n— 回転させる要素数。(U)Int8/16/32/64。
戻り値
指定された要素数だけ右方向に回転された配列。Array(T)
例
使用例
n が負の場合
arrayShiftLeft
導入バージョン: v23.8
配列を指定された要素数だけ左方向にシフトします。 新しい要素には、指定された引数、または配列要素型のデフォルト値が設定されます。 要素数が負の場合、配列は右方向にシフトされます。
構文
引数
arr— シフト対象の配列。Array(T). -n— シフトする要素数。(U)Int8/16/32/64. -default— 省略可能。新しく追加される要素のデフォルト値。
返り値
指定した要素数だけ左方向にシフトされた配列。Array(T)
例
使用例
n が負の場合
デフォルト値を使用する
arrayShiftRight
導入バージョン: v23.8
配列を、指定された要素数だけ右にシフトします。 新しい要素は、指定した引数、または配列要素型のデフォルト値で埋められます。 要素数が負の場合、配列は左にシフトされます。
構文
引数
arr— 要素をシフトする対象の配列。Array(T)n— シフトする要素数。(U)Int8/16/32/64default— 任意。新しく追加される要素のデフォルト値。
戻り値
指定された要素数だけ右にシフトされた配列。Array(T)
例
使用例
n が負の値の場合
デフォルト値を使用する
arrayShingles
導入バージョン: v24.1
入力配列から、指定した長さの連続した部分配列(文字列における n-gram に類似する shingle)を要素とする配列を生成します。
構文
引数
戻り値
生成されたシングルの配列。Array(T)
例
使用例
arrayShuffle
導入: v23.2
元の配列と同じサイズで、要素がシャッフルされた順序で含まれる配列を返します。 要素は、それらの要素の取り得るすべての順列が等しい確率で現れるように並べ替えられます。
この関数は定数をマテリアライズしません。
構文
引数
戻り値
要素がシャッフルされた配列。Array(T)
例
シードなしの例(結果は不安定)
シード未指定時の例(結果は安定)
arraySimilarity
導入バージョン: v25.4
重み付き Levenshtein 距離に基づいて、2 つの配列の類似度を 0 から 1 の範囲で計算します。
構文
引数
from— 最初の配列Array(T)to— 2 番目の配列Array(T)from_weights— 最初の配列に対する重みを表す配列。Array((U)Int*|Float*)to_weights— 2 番目の配列に対する重みを表す配列。Array((U)Int*|Float*)
戻り値
重み付きレーベンシュタイン距離に基づいて、2 つの配列の類似度を 0 から 1 の範囲の値として返します。Float64
例
使用例
arraySlice
導入バージョン: v1.1
NULL 要素を含む、配列の部分配列(スライス)を返します。
構文
引数
arr— スライス対象の配列。Array(T)offset— 配列の端からの位置。正の値は左端からのオフセット、負の値は右端からのオフセットを示します。配列要素の番号は1から始まります。(U)Int*length— 必要なスライスの長さ。負の値を指定すると、関数は開いたスライス[offset, array_length - length]を返します。値を省略した場合、関数はスライス[offset, the_end_of_array]を返します。(U)Int*
返される値
指定された offset 位置から、長さ length の配列スライスを返します。Array(T)
例
使用例
arraySort
導入バージョン: v1.1
指定された配列の要素を昇順にソートします。
ラムダ関数 f が指定された場合、配列の各要素にラムダを適用した結果に基づいてソート順が決定されます。
ラムダが複数の引数を受け取る場合、arraySort 関数には複数の配列が渡され、f の各引数はそれぞれ対応する配列の要素に対応します。
ソート対象の配列に -Inf、NULL、NaN、Inf が含まれている場合、それらは次の順序でソートされます:
-InfInfNaNNULL
arraySort は高階関数です。
構文
引数
f(y1[, y2 ... yN])— 配列xの要素に適用するラムダ関数。arr— ソート対象の配列。Array(T)arr1, ..., yN— 省略可。fが複数の引数を受け取る場合に指定する、追加の N 個の配列。
返り値
ラムダ関数が指定されていない場合は、配列 arr を昇順にソートして返します。ラムダ関数が指定されている場合は、そのロジックに従ってソートされた配列を返します。Array(T)。
例
例 1
例 2
例 3
arraySplit
導入バージョン: v20.1
ソース配列を複数の配列に分割します。func(x [, y1, ..., yN]) がゼロ以外の値を返した要素の直前で配列が分割されます。最初の要素の前では分割されません。
構文
引数
func(x[, y1, ..., yN])— ソース配列(x)および条件配列(y)の要素を処理するラムダ関数です。Lambda function
source_arr— 分割対象となるソース配列Array(T)[, cond1_arr, ... , condN_arr]— 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列Array(T)
返される値
配列の配列を返します Array(Array(T))
例
使用例
arraySum
導入: v21.1
入力配列の要素の合計を返します。
ラムダ関数 func が指定されている場合は、そのラムダを適用した結果要素の合計を返します。
構文
引数
func(x[, y1, ..., yN])— 省略可。ソース配列xおよび条件配列yの要素を処理するラムダ関数です。Lambda functionsource_arr— 処理対象となるソース配列。Array(T)cond1_arr, ... , condN_arr— 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。Array(T)
返される値
ソース配列内の要素の合計、またはラムダ関数が指定されている場合は、その結果要素の合計を返します。
例
基本的な例
ラムダ関数との併用
arraySymmetricDifference
導入バージョン: v25.4
複数の配列を受け取り、すべての入力配列に共通して存在しない要素からなる配列を返します。結果には一意な値のみが含まれます。
2 つを超える Set の対称差は、数学的には、奇数個の入力 Set に含まれるすべての入力要素からなる Set として定義されます。
これに対して、関数 arraySymmetricDifference は、すべての入力 Set に含まれない入力要素からなる Set を単純に返します。
構文
引数
arrN— 新しい配列を構成するための N 個の配列。Array(T)。
戻り値
すべての元の配列に共通して存在しない要素のみを含む配列を返します。Array(T)。
例
使用例
arrayUnion
導入バージョン: v24.10
複数の配列を受け取り、ソース配列のいずれかに含まれるすべての要素を含む配列を返します。結果には重複のない値のみが含まれます。
構文
引数
arrN— 新しい配列を作成するための N 個の配列。Array(T)
戻り値
元の配列群から重複しない要素のみを含む配列を返します。Array(T)
例
使用例
arrayUniq
導入バージョン: v1.1
引数が 1 つだけ渡された場合、その配列内の異なる要素の数をカウントします。 複数の引数が渡された場合、複数の配列において同じ位置にある要素から構成される タプル のうち、異なるものの数をカウントします。
たとえば SELECT arrayUniq([1,2], [3,4], [5,6]) は次のようなタプルを構成します:
- 位置 1: (1,3,5)
- 位置 2: (2,4,6)
その後、タプルのうち異なるものの個数を数えます。この場合は 2 になります。
渡されるすべての配列は同じ長さである必要があります。
配列内のユニークな要素のリストを取得したい場合は、arrayReduce('groupUniqArray', arr) を使用できます。
構文
引数
arr1— 一意な要素数をカウントする対象の配列。Array(T)[, arr2, ..., arrN]— 省略可。複数の配列において、同じ位置の要素からなる一意なタプル数をカウントするために使用する追加の配列。Array(T)
戻り値
単一の引数の場合は、一意な要素数を返します。複数の引数の場合は、
各配列で同じ位置にある要素から構成される一意なタプル数を返します。
UInt32
例
単一引数
複数の引数
arrayWithConstant
導入バージョン: v20.1
長さが length で、すべての要素が定数 x の配列を作成します。
構文
引数
length— 配列の長さ(要素数)。(U)Int*x— 配列内の各要素に設定される値。任意の型。
戻り値
要素数 N で、すべての要素の値が x である Array を返します。Array(T)
例
使用例
arrayZip
導入バージョン: v20.1
複数の配列を 1 つの配列に結合します。結果の配列には、ソース配列の対応する要素が、引数の並び順でタプルにまとめられて格納されます。
構文
引数
arr1, arr2, ... , arrN— 1 つの配列に結合する N 個の配列です。Array(T)
返される値
ソース配列の要素をタプルとしてグループ化した配列を返します。タプル内のデータ型は入力配列の型と同じであり、配列が渡された順序と同じ順序になります。Array(T)
例
使用例
arrayZipUnaligned
導入バージョン: v20.1
複数の配列を 1 つの配列に結合し、長さが揃っていない配列(長さが異なる配列)も許容します。結果の配列には、引数で指定された順序に従って、元の各配列の対応する要素がタプルとしてまとめられて格納されます。
構文
引数
arr1, arr2, ..., arrN— 1 つの配列に結合する N 個の配列。Array(T)
返される値
元の配列の要素をタプル単位でグループ化した配列を返します。タプル内のデータ型は入力配列の型と同じであり、配列が渡された順序を保持します。Array(T) または Tuple(T1, T2, ...)
例
使用例
countEqual
導入バージョン: v1.1
配列内の要素のうち、x と等しいものの個数を返します。arrayCount(elem -> elem = x, arr) と同等です。
NULL 要素は、他の値とは別の値として扱われます。
構文
引数
arr— 検索対象の配列。Array(T)x— 配列内でカウントする値。任意の型。
戻り値
配列内で x と等しい要素の数を返します。UInt64
例
使用例
empty
導入バージョン: v1.1
入力配列が空かどうかを判定します。
要素をまったく含まない場合、その配列は空と見なされます。
optimize_functions_to_subcolumns setting を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1 の場合、この関数は配列カラム全体を読み取って処理する代わりに、size0 サブカラムのみを読み取ります。クエリ SELECT empty(arr) FROM TABLE; は SELECT arr.size0 = 0 FROM TABLE; に変換されます。
この関数は String や UUID に対しても動作します。
構文
引数
arr— 入力配列。Array(T)
戻り値
空の配列の場合は 1、空でない配列の場合は 0 を返します。UInt8
例
使用例
emptyArrayDate
導入バージョン: v1.1
空の Date 型配列を返します
構文
引数
- なし。
戻り値
空の Date 配列。Array(T)
例
使用例
emptyArrayDateTime
導入: v1.1
空の DateTime 配列を返します
構文
引数
- なし。
返り値
空の DateTime 配列。Array(T)
例
使用例
emptyArrayFloat32
導入バージョン: v1.1
空の Float32 配列を返します。
構文
引数
- なし。
戻り値
空の Float32 型配列。 Array(T)
例
使用例
emptyArrayFloat64
導入バージョン: v1.1
空の Float64 型配列を返します
構文
引数
- なし。
戻り値
空の Float64 配列。Array(T)
例
使用例
emptyArrayInt16
導入: v1.1
空の Int16 配列を返します
構文
引数
- なし。
戻り値
空の Int16 配列。Array(T)
例
使用例
emptyArrayInt32
導入: v1.1
空の Int32 配列を返します
構文
引数
- なし。
戻り値
空の Int32 型配列。Array(T)
例
使用例
emptyArrayInt64
導入バージョン: v1.1
空の Int64 配列を返します。
構文
引数
- なし
戻り値
空の Int64 型配列。Array(T)
例
使用例
emptyArrayInt8
導入バージョン: v1.1
空の Int8 配列を返します。
構文
引数
- なし。
戻り値
空の Int8 配列です。Array(T)
例
使用例
emptyArrayString
導入: v1.1
空の String 配列を返します。
構文
引数
- なし。
戻り値
空の String 型配列。Array(T)
例
使用例
emptyArrayToSingle
導入バージョン: v1.1
空の配列を受け取り、デフォルト値を要素とする 1 要素配列を返します。
構文
引数
arr— 空の配列。Array(T)
戻り値
配列要素型のデフォルト値を 1 つだけ含む配列。Array(T)
例
基本的な例
emptyArrayUInt16
導入バージョン: v1.1
空の UInt16 配列を返します。
構文
引数
- なし
返される値
空の UInt16 配列。Array(T)
例
使用例
emptyArrayUInt32
導入: v1.1
空の UInt32 配列を返します
構文
引数
- なし。
戻り値
空の UInt32 配列。Array(T)
例
使用例
emptyArrayUInt64
導入バージョン: v1.1
空の UInt64 型配列を返します。
構文
引数
- なし。
返り値
空の UInt64 の配列。Array(T)
例
使用例
emptyArrayUInt8
導入バージョン:v1.1
空の UInt8 型の配列を返します。
構文
引数
- なし。
戻り値
空の UInt8 型配列。Array(T)
例
使用例
has
導入バージョン: v1.1
配列に指定した要素が含まれているかどうかを返します。
最初の引数が定数配列で、2 番目の引数がカラムまたは式である場合、has(constant_array, column) は column IN (constant_array) と同様に動作し、最適化のためにプライマリキーおよびデータスキップ索引を利用できます。たとえば、has([1, 10, 100], id) は、id が PRIMARY KEY の一部であればプライマリキー索引を活用できます。
この最適化は、カラムに単調関数が適用されている場合(例: has([...], toDate(ts)))にも適用されます。
構文
引数
arr— 元の配列。Array(T)x— 配列内で検索する値。
戻り値
配列が指定された要素を含む場合は 1 を返し、含まない場合は 0 を返します。UInt8
例
基本的な使用方法
見つかりません
hasAll
導入バージョン: v1.1
一方の配列が他方の配列の部分集合かどうかをチェックします。
- 空の配列は任意の配列の部分集合です。
Nullは値として処理されます。- 両方の配列における値の順序は関係ありません。
構文
引数
set— 要素の集合を持つ任意の型の配列。Array(T)subset—setと共通のスーパータイプを持ち、その要素がsetの部分集合であるかどうかを検証する対象となる任意の型の配列。Array(T)
戻り値
setがsubsetのすべての要素を含む場合は1。- それ以外の場合は
0。
set と subset の要素が共通のスーパータイプを持たない場合、NO_COMMON_TYPE 例外を送出します。
例
空配列
NULL 値を含む配列
異なる型の値を含む配列
String 型の値を含む配列
共通の要素型を持たない配列
配列の配列
hasAny
導入バージョン: v1.1
2 つの配列に、少なくとも 1 つ共通する要素があるかどうかをチェックします。
Nullは値として処理されます。- 両方の配列内での値の順序は関係ありません。
構文
引数
戻り値
arr_xとarr_yに少なくとも 1 つ同じ要素が存在するときは1。- それ以外の場合は
0。
2 つの配列の要素に、共通の上位型を持たないものがある場合、NO_COMMON_TYPE 例外をスローします。
例
片方の配列が空の場合
NULL 値を含む配列
異なる型の値を含む配列
共通の型を持たない配列
配列の配列
hasSubstr
導入バージョン: v20.6
array2 のすべての要素が、array1 の中にまったく同じ順序で出現するかどうかをチェックします。
したがって、この関数は array1 = prefix + array2 + suffix が成り立つ場合に限り 1 を返します。
言い換えると、この関数は hasAll 関数と同様に、array2 のすべての要素が array1 に含まれているかどうかをチェックします。
さらに、array1 と array2 の両方で要素が同じ順序で現れることもチェックします。
array2が空の場合、この関数は1を返します。Nullは値として処理されます。言い換えると、hasSubstr([1, 2, NULL, 3, 4], [2,3])は0を返します。ただし、hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])は1を返します。- 両方の配列における値の順序は重要です。
2 つの配列の要素の型が共通のスーパータイプを持たない場合、NO_COMMON_TYPE 例外をスローします。
構文
引数
戻り値
配列 arr1 が配列 arr2 を含む場合は 1 を返します。そうでない場合は 0 を返します。UInt8
例
両方の配列が空の場合
NULL 値を含む配列
異なる型の値を含む配列
文字列を含む配列
順序が定義された配列
順序が不正な配列
配列の配列
共通の型を持たない配列
indexOf
導入バージョン: v1.1
配列内に値 'x' を持つ要素がある場合、その最初の要素のインデックス(1 始まり)を返します。
配列に検索対象の値が含まれていない場合、関数は 0 を返します。
NULL に設定された要素は通常の値として扱われます。
構文
引数
戻り値
arr 内に x が存在する場合、その最初の出現位置の索引(1 始まり)を返します。存在しない場合は 0 を返します。UInt64
例
基本的な例
NULL を含む配列
indexOfAssumeSorted
導入: v24.12
配列内に値 'x' を持つ要素が存在する場合、その最初の要素のインデックス(1 から始まる)を返します。
検索対象の値が配列内に存在しない場合、関数は 0 を返します。
indexOf 関数と異なり、この関数は配列が昇順にソートされていると仮定します。
配列がソートされていない場合、結果は未定義です。
構文
引数
返り値
arr に x が存在する場合、最初の x の索引(1 から始まる番号)を返します。存在しない場合は 0 を返します。UInt64
例
基本的な例
length
導入バージョン: v1.1
文字列または配列の長さを計算します。
- 引数が String または FixedString の場合: 文字列内のバイト数を計算します。
- 引数が Array の場合: 配列内の要素数を計算します。
- FixedString 引数に適用された場合、この関数は定数式として評価されます。
文字列中のバイト数は、Unicode の「コードポイント」の数とも、Unicode の「書記素クラスタ」 (一般的に「文字」と呼ぶもの)の数とも、表示幅とも同じではないことに注意してください。
文字列中に ASCII の NULL バイトが含まれていても問題はなく、それらもカウントされます。
構文
別名: OCTET_LENGTH
引数
x— バイト数(String/FixedString の場合)または要素数(Array の場合)を計算する対象の値。StringまたはFixedStringまたはArray(T)
返される値
String/FixedString x のバイト数、または配列 x の要素数を返します。戻り値の型は UInt64 です。
例
String の例
配列の例
constexpr の例
Unicode の例
ascii_vs_utf8 の使用例
notEmpty
導入バージョン: v1.1
入力配列が空でないかどうかをチェックします。
配列に少なくとも 1 つの要素が含まれている場合、その配列は空でないと見なされます。
optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1 の場合、この関数は配列カラム全体を読み取り・処理する代わりに、size0 サブカラムのみを読み取ります。クエリ SELECT notEmpty(arr) FROM table は SELECT arr.size0 != 0 FROM TABLE に変換されます。
この関数は String 型や UUID 型に対しても動作します。
構文
引数
arr— 入力配列。Array(T)
返される値
空でない配列には 1 を、空の配列には 0 を返します。UInt8
例
使用例
range
導入バージョン: v1.1
start から end - 1 までを、step ごとの間隔で並べた数値の配列を返します。
サポートされる型は次のとおりです:
-
UInt8/16/32/64 -
Int8/16/32/64 -
すべての引数
start、end、stepは上記のいずれかの型でなければなりません。返される配列の要素の型は、引数のスーパータイプになります。 -
関数が、設定
function_range_max_elements_in_blockで指定された要素数を超える長さの配列を返す場合、例外がスローされます。 -
いずれかの引数が Nullable(nothing) 型の場合は
NULLを返します。いずれかの引数がNULL値(Nullable(T) 型)を含む場合、例外がスローされます。
構文
引数
start— 省略可能。配列の最初の要素。stepを使用する場合は必須。デフォルト値:0。end— 必須。配列を構築する際の終端となる数値(この値自体は含まれない)。step— 省略可能。配列内の各要素間の増分を指定します。デフォルト値:1。
戻り値
start から end - 1 までを step ごとに並べた数値の配列。Array(T)
例
使用例
replicate
導入バージョン: v1.1
単一の値を要素とする配列を作成します。
構文
引数
戻り値
arr と同じ長さで、値 x で埋められた配列を返します。Array(T)
例
使用例
reverse
導入バージョン: v1.1
入力配列の要素、または入力文字列の文字の順序を逆順にします。
構文
引数
戻り値
要素または文字の順序を逆にした配列または文字列を返します。
例
配列を反転
文字列の反転
距離関数
サポートされているすべての関数については、距離関数のドキュメントを参照してください。