array
導入バージョン: v1.1.0 関数の引数から Array を作成します。 引数は定数であり、型は共通のスーパータイプを共有している必要があります。 少なくとも 1 つの引数を渡す必要があります。そうしないと、どの型の Array を作成すべきか判断できないためです。 つまり、この関数を使って空の Array を作成することはできません。空の Array を作成するには、emptyArray* 関数を使用してください。
同じ機能を使うには、[ ] 演算子を使用します。
構文
x1— 任意の型 T の定数値。この引数のみを指定した場合、Array の型は T になります。 -[, x2, ..., xN]—x1と共通の上位型を持つ、追加の N 個の定数値
Array(T)
例
有効な使用例
Query
Response
Query
Response
arrayAUCPR
導入バージョン: v20.4.0 適合率-再現率 (PR) 曲線の下面積を計算します。 適合率-再現率曲線は、すべての閾値にわたって、y 軸に適合率、x 軸に再現率をプロットして作成されます。 結果の値は 0 から 1 の範囲をとり、値が高いほどモデルの性能が高いことを示します。ただし、スコアがNaN の場合、結果は NaN になります。
PR AUC は、特に不均衡なデータセットで有用であり、そのようなケースでは ROC AUC と比べて性能をより明確に比較できます。
詳細については、こちら、こちら、および こちら を参照してください。
構文
arrayPRAUC
引数
cores— 予測モデルが出力するスコア。Array((U)Int*)またはArray(Float*)labels— サンプルのラベル。通常、正例は 1、負例は 0 です。Array((U)Int*)またはArray(Enum)partial_offsets—- 任意。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 は、スコアのある区間に対応する、データセット全体の一部のパーティションのみを含む必要があります。
データセットは連続するパーティションに分割する必要があり、各パーティションには、スコアが特定の範囲に入るデータの部分集合が含まれている必要があります。
例えば:- あるパーティションには、範囲 [0, 0.5) のすべてのスコアを含めることができます。
- 別のパーティションには、範囲 [0.5, 1.0] のスコアを含めることができます。
NaN の場合は NaN を返します。Float64
例
使用例
Query
Response
arrayAll
導入バージョン: v1.1.0 ラムダfunc(x [, y1, y2, ... yN]) がすべての要素に対して true を返す場合は 1 を返し、それ以外の場合は 0 を返します。
構文
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して動作するラムダ関数です。Lambda functionsource_arr— 処理するソース配列です。Array(T)cond1_arr, ...— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)
1、それ以外の場合は 0 を返します。UInt8
例
すべての要素が一致する場合
Query
Response
Query
Response
arrayAutocorrelation
導入バージョン: v26.4.0 Array の自己相関を計算します。max_lag が指定されている場合は、[0, max_lag) の範囲内のラグについてのみ相関を計算します。
max_lag が指定されていない場合は、取り得るすべてのラグについて計算します。
構文
Array(Float64)
例
線形
Query
Response
Query
Response
Query
Response
Query
Response
arrayAvg
導入バージョン: v21.1.0 ソース配列の要素の平均値を返します。 ラムダ関数func が指定されている場合は、ラムダ関数の結果の要素の平均値を返します。
構文
func(x[, y1, ..., yN])— 任意。ソース配列 (x) と条件配列 (y) の要素に対して適用されるラムダ関数。Lambda functionsource_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Float64
例
基本的な例
Query
Response
Query
Response
arrayBottomK
導入バージョン: v26.6.0 入力 Array 内の最小の K 個の要素を、昇順にソートした配列として返します。 ラムダ関数f を指定した場合、要素同士は各要素に f を適用した結果に基づいて比較されます。
f が複数の引数を受け取る場合は、追加の配列が arrayBottomK に渡され、それらの要素が
f の引数に対応します。
NULL 値はスキップされ、結果には含まれません。結果のサイズは最大 K です。
また、入力配列に含まれる非 NULL の要素数が K 未満の場合は、これより小さくなることがあります。
結果の要素型は、入力要素型に対応する非 Nullable 型です。
arrayBottomK は高階関数です。
関連項目:
- 代わりに最大の K 個の要素を返す
arrayTopK。 - 同じ K 個の要素を位置
[1..K]に返しますが、 残りの要素も順序未指定のまま保持し、null をスキップしないarrayPartialSort。
f(arr[, arr1, ... ,arrN])— 任意。各要素のソートキーを計算するためのラムダ関数。ラムダ関数K— 返される最小要素数。(U)Int8/16/32/64arr— 配列。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合に使う、追加のN個の配列。Array(T)
arr のうち値が最も小さい要素 (またはラムダ関数の結果が最も小さい要素) を最大 K 個、昇順にソートして返します。
NULL 値はスキップされます。入力の型が Nullable(T) の場合でも、返される配列の要素型は T です。
例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayCompact
導入バージョン: v20.1.0 配列から、null 値を含む連続した重複要素を削除します。結果の配列における値の順序は、ソース配列での順序によって決まります。
構文
arr— 重複を削除する対象の配列。Array(T)
Array(T)
例
使用例
Query
Response
arrayConcat
導入バージョン: v1.1.0 引数として渡された Array を結合します。 構文arr1 [, arr2, ... , arrN]— 連結するN個の Array。Array(T)
Array(T)
例
使用例
Query
Response
arrayCount
導入バージョン: v1.1.0func(arr1[i], ..., arrN[i]) が true を返す要素の個数を返します。
func が指定されていない場合は、配列内の 0 以外の要素の個数を返します。
arrayCount は高階関数です。
構文
func が true を返す要素の数を返します。func を指定しない場合は、配列内の 0 以外の要素数を返します。UInt32
例
使用例
Query
Response
arrayCumSum
導入バージョン: v1.1.0 ソースArrayの要素について、部分和 (累積和) を格納した Array を返します。ラムダ関数を指定した場合は、各位置の Array 要素にラムダ関数を適用した結果に基づいて和が計算されます。 構文func— 任意。各位置の Array 要素に適用するラムダ関数。ラムダ関数arr1— 数値のソースArray。Array(T)[arr2, ..., arrN]— 任意。同じサイズの追加の Array です。指定した場合は、ラムダ関数の引数として渡されます。Array(T)
Array(T)
例
基本的な使い方
Query
Response
Query
Response
arrayCumSumNonNegative
導入バージョン: v18.12.0 ソースArrayの要素の部分和 (累積和) からなる Array を返します。累積和が負になった場合は、0 に置き換えられます。ラムダ関数が指定されている場合、各位置の Array 要素にラムダ関数を適用した結果に基づいて和が計算されます。 構文func— 任意。各位置の Array 要素に適用するラムダ関数。ラムダ関数arr1— 数値からなるソースArray。Array(T)[arr2, ..., arrN]— 任意。同じサイズの追加Arrayです。指定した場合は、ラムダ関数に引数として渡されます。Array(T)
Array(T)
例
基本的な使い方
Query
Response
Query
Response
arrayDifference
導入バージョン: v1.1.0 隣接する配列要素どうしの差分を格納した配列を返します。 結果の配列の最初の要素は 0、2 番目はarr[1] - arr[0]、3 番目は arr[2] - arr[1]、以降も同様です。
結果の配列の要素の型は、減算における型推論の規則によって決まります (例: UInt8 - UInt8 = Int16) 。
構文
arr— 隣接する要素同士の差分を計算する対象の Array。Array(T)
UInt*
例
使用例
Query
Response
Query
Response
arrayDistinct
導入バージョン: v1.1.0 配列内の重複を除いた要素のみを含む配列を返します。 構文arr— 重複のない要素を抽出する対象の Array。Array(T)
Array(T)
例
使用例
Query
Response
arrayDotProduct
導入バージョン: v23.5.0 2 つの配列の内積を返します。2 つのベクトルのサイズは同じである必要があります。Array と Tuple には、異なる要素型を混在させることもできます。
v1— 第1ベクトル。Array((U)Int* | Float* | BFloat16 | Decimal)またはTuple((U)Int* | Float* | Decimal)v2— 第2ベクトル。Array((U)Int* | Float* | BFloat16 | Decimal)またはTuple((U)Int* | Float* | Decimal)
戻り値の型は引数の型によって決まります。Array または Tuple に異なる要素型が混在している場合、結果の型は共通の上位型になります。
2 つの
BFloat16 配列は Float32 で累積され、Float32 を返します (2 つの Float32 配列と同じ規則です) 。(U)Int* または Float* または Decimal
例
Array の例
Query
Response
Query
Response
arrayElement
導入バージョン: v1.1.0 指定された配列の索引n にある要素を返します。n には任意の整数型を指定できます。
索引が配列の範囲外の場合は、デフォルト値 (数値であれば 0、文字列であれば空文字列など) を返します。
ただし、非定数の配列引数に対して定数索引 0 を指定した場合は例外で、この場合は Array indices are 1-based というエラーになります。
n が整数の配列の場合、指定した位置にある要素の配列を返します (ギャザー操作) 。
これは arrayMap(i -> arr[i], n) と同等ですが、より効率的な別実装が使用されます。
範囲外の位置では、スカラー索引の場合と同様にデフォルト値が返されます。
索引の要素は Nullable にできます。要素型を Nullable でラップできる場合、NULL 索引は NULL を返し (結果の要素型も Nullable になります) 、
Nullable 内に含められない要素型 (Array、Map など) では、NULL 索引は代わりにデフォルト値を返します。これはスカラーの NULL 索引と同じ動作です。
ClickHouse の Array は 1 始まりです。
arr[-1] は配列の最後の要素です。
演算子 [n] でも同じ機能を使用できます。
第 1 引数には次のものも指定できます。
Map:m['key']はkeyに格納された値を返します。キーが存在しない場合は値型のデフォルト値を返します。QBit:q[n]は n 番目のベクトル要素を QBit 要素型の元の精度で再構築し、その要素を含むストライドグループのビットプレーンのみを読み取ります。JSONまたはNullable(JSON):json['key']は、パスkey(定数文字列である必要があります) に格納された値を返します。これはドット構文json.keyとまったく同じ動作です。Nullable(JSON)の場合、結果はjson.keyと同じ NULL 許容規則に従います。つまり、NULLを表現できるパス (Dynamic、またはNullableでラップできる型付きパス) は外側のNULL行に対してNULLを返し、ArrayやMapのような非 Nullable の型付きパスはそこでデフォルト値を保持します。キーには定数のNullable(String)も指定でき、NULLのキーはNULLを返します。ネストしたアクセスはチェーンできます:json['a']['b']。
arr— 要素を読み取る対象の値。Array(T)、Map(K, V)、QBit、JSONまたはNullable(JSON). -n— 取得する要素の位置、または位置の配列。位置は Nullable にすることができます。(U)Int*またはArray((U)Int*).Map引数の場合は型Kのキー、JSON引数の場合は定数のStringパス。
n がスカラーの場合、型 T の要素を返します。n が配列の場合、索引の要素が Nullable であり、T を Nullable でラップできる場合は Array(Nullable(T)) を返し、それ以外の場合は Array(T) を返します。Map の場合は型 V の値を、JSON の場合はそのパスに格納されている値を返します。Any または Array(T) または Array(Nullable(T))
例
使用例
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayElementOrNull
導入バージョン: v1.1.0 指定された配列の索引n にある要素を取得します。n には任意の整数型を指定できます。
索引が配列の範囲外の場合、結果の型を Nullable にできる限り、デフォルト値ではなく NULL が返されます。
すでに Nullable ではなく、Nullable 内に配置できない要素型 (Array、Map など) の場合は、代わりに要素型のデフォルト値が返されます。
n が整数の配列である場合、指定された位置にある要素の配列を返します。
これは arrayMap(i -> arrayElementOrNull(arr, i), n) と同等ですが、より効率的な個別の実装が使用されます。
範囲外の位置および NULL 索引は、スカラー索引の場合と同じ規則に従い、結果の配列内で NULL 値になります。
ClickHouse の Array は 1 始まりの配列です。
arr[-1] は配列の最後の要素です。
第 1 引数には Map を指定することもできます。存在しないキーの場合、値の型を Nullable でラップできる限り、その型のデフォルト値ではなく NULL が返されます。
JSON はここではサポートされていません。代わりに arrayElement を使用してください。
構文
arr— 要素を読み取る対象の値。Array(T)またはMap(K, V)。-n— 取得する要素の位置、または位置の配列。位置にはNULLを指定できます。(U)Int*またはArray((U)Int*)。Map引数の場合は、型Kのキー。
n がスカラー値の場合、T を Nullable でラップできる場合は Nullable(T)、それ以外の場合は T を返します。n が配列の場合、T を Nullable でラップできる場合は Array(Nullable(T))、それ以外の場合は Array(T) を返します。Map の場合は、同じ規則が値の型 V に適用されます。Any または Nullable(T) または Array(T) または Array(Nullable(T))
例
使用例
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayEnumerate
導入バージョン: v1.1.0 配列[1, 2, 3, ..., length (arr)] を返します
この関数は通常、ARRAY JOIN 句とともに使用されます。これにより、ARRAY JOIN の適用後に、各配列につき
1 回だけカウントできるようになります。
この関数は高階関数でも使用できます。たとえば、条件に一致する要素の配列内インデックスを取得するために使用できます。
構文
arr— 列挙対象の配列。Array
[1, 2, 3, ..., length (arr)] を返します。Array(UInt32)
例
ARRAY JOIN を使った基本例
Query
Response
arrayEnumerateDense
導入バージョン: v18.12.0 ソース配列内で各要素が最初に出現する位置を示す、ソース配列と同じサイズの配列を返します。 構文arr— 番号付けする対象の配列です。Array(T)
arr と同じサイズの配列を返します。各要素がソース配列内で最初に現れる位置を示します。Array(T)
例
使用例
Query
Response
arrayEnumerateDenseRanked
導入バージョン: v20.1.0 ソース配列と同じサイズの配列を返します。この配列は、各要素がソース配列内で最初に出現する位置を示します。配列の内部をどの深さまで参照するかを指定できるため、多次元配列を列挙できます。 構文clear_depth— 指定したレベルで要素を別々に列挙します。max_arr_depth以下でなければなりません。UInt*arr— 列挙対象の N 次元配列。Array(T)max_array_depth— 有効な最大深度です。arrの深さ以下でなければなりません。UInt*
Array
例
基本的な使い方
Query
Response
Query
Response
Query
Response
arrayEnumerateUniq
導入バージョン: v1.1.0 ソース配列と同じサイズの配列を返します。この配列は、各要素について、同じ値を持つ要素の中での位置を示します。 この関数は、ARRAY JOIN と配列要素の集約を使用する場合に便利です。
この関数は、同じサイズの複数の配列を引数として受け取ることもできます。この場合、一意性は、すべての配列の同じ位置にある要素のタプルに対して判定されます。
構文
arr1— 処理する最初の配列。Array(T)arr2, ...— 任意。同じサイズの追加の配列で、タプルの一意性を判定するために使用します。Array(UInt32)
Array(T)
例
基本的な使い方
Query
Response
Query
Response
Query
Response
arrayEnumerateUniqRanked
導入バージョン: v20.1.0 ソース配列と同じ次元の配列 (または多次元配列) を返します。 各要素について、同じ値を持つ要素の中で何番目に当たるかを示します。 また、配列の内部をどの深さまで見るかを指定して、多次元配列を列挙できます。 構文clear_depth— 指定したレベルで要素を個別に列挙します。max_arr_depth以下の正の整数。UInt*arr— 列挙対象の N 次元配列。Array(T)max_array_depth— 有効な最大深度。arrの深度以下の正の整数。UInt*
arr と同じサイズの N 次元配列を返します。各要素には、同じ値を持つ他の要素に対するその要素の位置が示されます。Array(T)
例
例 1
Query
Response
Query
Response
Query
Response
Query
Response
arrayExcept
導入バージョン: v25.9.0 元の順序を保持したまま、except に含まれない source の要素からなる配列を返します。
この関数は、2 つの配列に対して差集合演算を行います。source の各要素について、その要素が except に存在するかどうかを確認し (厳密比較を使用) 、存在しない場合は結果に含めます。
この演算では、次の性質が維持されます。
sourceの要素の順序は保持されますsource内の重複要素は、exceptに存在しない場合は保持されます- NULL は個別の値として扱われます
except に含まれない source の要素を含む、入力配列と同じ型の配列を返します。 Array(T)
例
基本
Query
Response
Query
Response
Query
Response
Query
Response
arrayExists
導入バージョン: v1.1.0 ソース配列内にfunc(x[, y1, y2, ... yN]) が true を返す要素が少なくとも 1 つある場合は 1 を返し、それ以外の場合は 0 を返します。
構文
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して動作するラムダ関数です。ラムダ関数source_arr— 処理するソース配列です。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)
1、それ以外の場合は 0 を返します。UInt8
例
使用例
Query
Response
arrayFill
導入バージョン: v20.1.0arrayFill 関数は、ソース配列を先頭の要素から末尾の要素まで順番に処理し、
各位置でソース配列および条件配列の要素を使ってラムダ関数の条件を評価します。位置 i でラムダ関数の評価結果が
false の場合、
この関数はその要素を、配列の現在の状態における位置 i-1 の要素に置き換えます。
先頭の要素は、条件にかかわらず常に保持されます。
構文
func(x [, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して適用されるラムダ関数func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])。ラムダ関数source_arr— 処理対象のソース配列。ラムダ関数[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Array(T) を返します
例
単一配列の例
Query
Response
Query
Response
arrayFilter
導入バージョン: v1.1.0 ラムダ関数が true を返すソース配列内の要素のみを含む配列を返します。 構文func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の各要素に対して処理を行うラムダ関数。ラムダ関数source_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Array(T) を返します
例
例 1
Query
Response
Query
Response
arrayFirst
導入バージョン: v1.1.0func(x[, y1, y2, ... yN]) が true を返すソース配列内の最初の要素を返します。該当する要素がない場合は、デフォルト値を返します。
構文
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して動作するラムダ関数。ラムダ関数。 -source_arr— 処理するソース配列。Array(T)。 -[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)。
λ が true になるソース配列の最初の要素を返します。該当する要素がない場合は、T のデフォルト値を返します。
例
使用例
Query
Response
Query
Response
arrayFirstIndex
導入バージョン: v1.1.0func(x[, y1, y2, ... yN]) が true を返すソース配列内の最初の要素の索引を返します。該当する要素がない場合は ‘0’ を返します。
構文
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して評価を行うラムダ関数です。Lambda function。 -source_arr— 処理対象のソース配列です。Array(T)。 -[, cond1_arr, ... , condN_arr]— 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)。
func が true となるソース配列の最初の要素の索引を返します。該当する要素がない場合は 0 を返します UInt32
例
使用例
Query
Response
Query
Response
arrayFirstOrNull
導入バージョン: v1.1.0func(x[, y1, y2, ... yN]) が true を返すソースArray内の最初の要素を返します。該当する要素がない場合は NULL を返します。
構文
func(x[, y1, ..., yN])— ソースArray (x) および条件Array (y) の要素に対して適用されるラムダ関数。ラムダ関数source_arr— 処理するソースArray。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件Array。Array(T)
func が true となるソースArrayの最初の要素を返します。該当する要素がない場合は NULL を返します。
例
使用例
Query
Response
Query
Response
arrayFlatten
導入バージョン: v20.1.0 Array の Array をフラット化して、1つの Array に変換します。 関数:- ネストされた Array の深さにかかわらず適用できます。
- すでにフラットな Array は変更しません。
flatten
引数
arr— 多次元Array。Array(Array(T))
Array(T) を返します
例
使用例
Query
Response
arrayFlattenedLength
導入バージョン: v26.9.0 多次元ArrayをarrayFlatten 関数で平坦化した場合と同じように、要素の総数を返します。
関数:
- 任意の深さにネストされたArrayに適用されます。
- すでに平坦化されているArrayでは、
lengthと同等です。 Arrayのネストのみをたどります。要素はArrayではない最初のレベルでカウントされるため、ネストされたMap、Tuple、Dynamic、またはVariantがそれ自体にArrayを保持している場合でも、その要素は個別にカウントされません。
cardinality に相当します。一方、ClickHouse の cardinality は length のエイリアスであり、最外層のArrayの要素のみをカウントします。
構文
arr— 多次元Arrayの場合もあるArray。Array(T)
UInt64
例
ネストされたArray
Query
Response
Query
Response
Query
Response
Query
Response
arrayFold
導入バージョン: v23.10.0 1 つ以上の同じ長さの配列にラムダ関数を適用し、その結果をアキュムレータに格納します。 構文λ(x, x1 [, x2, x3, ... xN])— ラムダ関数λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])。ここでFはaccとxの配列要素に適用される演算で、その結果のaccが繰り返し再利用されます。ラムダ関数arr1 [, arr2, arr3, ... arrN]— 演算の対象となる N 個の配列。Array(T)acc— ラムダ関数の戻り値と同じ型のアキュムレータ値。
acc の値を返します。
例
使用例
Query
Response
Query
Response
Query
Response
arrayIntersect
導入バージョン: v1.1.0 複数の配列を受け取り、すべてのソース配列に共通して含まれる要素からなる配列を返します。結果には一意の値のみが含まれます。 構文arrN— 新しい配列の作成元となる N 個の配列。Array(T).
Array(T)
例
使用例
Query
Response
arrayJaccardIndex
導入バージョン: v23.7.0 2つの配列の ジャカード係数 を返します。 構文arr_x と arr_y のジャカード係数を返します。Float64
例
使用例
Query
Response
arrayJoin
導入バージョン: v1.1.0arrayJoin 関数は、Array を含む1つの行を受け取り、それを展開して、Array の各要素ごとに1行ずつ、複数の行を生成します。
これは、同じ行の中で入力値を出力値に対応付ける ClickHouse の通常の関数や、
複数の行のグループを1つの要約行に「圧縮」または「集約」する集約関数
(GROUP BY とともに使用した場合は、要約行内の単一の値) とは対照的です。
この関数が適用されたカラムを除き、他のカラムの値はそのままコピーされます。
適用されたカラムの値は、対応する Array の要素の値に置き換えられます。
unnest (バージョン26.5以降) は、関数呼び出し形式 (SELECT unnest(arr)) における arrayJoin の大文字・小文字を区別しない別名です。PostgreSQL のテーブルソース構文 (FROM unnest(...)、CROSS JOIN UNNEST(...)、および LATERAL) はサポートされていません。これらのクエリには ARRAY JOIN 句を使用してください。
別名の unnest 経由を含め、arrayJoin は結合中に評価される JOIN ON 条件では使用できません。このような条件では、
行数を維持する必要があるためです。一方の側にのみ適用される条件、および arrayJoin に対する等価キーは、
結合前に抽出されるため、影響を受けません。非選言的な ALL INNER JOIN 条件も影響を受けません。
この場合、条件は代わりに結合後に適用されるためです。
展開が一方の側のみに依存する場合は、結合前のサブクエリ内の ARRAY JOIN に移動してください。arrayJoin の引数が両側のカラムを参照する条件は、再構成する必要があります。
この関数は非決定論的です。同じ引数に対して異なる結果を返すことがあります。
unnest
引数
arr— 展開する Array。Array(T)
arr を展開して得られる行の集合を返します。
例
基本的な使い方
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayLast
導入バージョン: v1.1.0 ラムダfunc(x [, y1, y2, ... yN]) が true を返すソースArray内の最後の要素を返します。該当する要素がない場合は、デフォルト値を返します。
構文
func(x[, y1, ..., yN])— ソースArray (x) および条件Array (y) の要素に対して適用されるラムダ関数です。ラムダ関数。 -source— 処理対象のソースArray。Array(T)。 -[, cond1, ... , condN]— 省略可。ラムダ関数に追加の引数を渡すための N 個の条件Arrayです。Array(T)。
func が true となるソースArray内の最後の要素を返します。該当する要素がない場合は、T のデフォルト値を返します。
例
使用例
Query
Response
Query
Response
arrayLastIndex
導入バージョン: v1.1.0func(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
例
使用例
Query
Response
Query
Response
arrayLastOrNull
導入バージョン: v1.1.0 ラムダfunc(x [, y1, y2, ... yN]) が true を返すソースArray内の最後の要素を返します。該当する要素がない場合は、NULL を返します。
構文
func(x [, y1, ..., yN])— ソースArray (x) と条件Array (y) の要素に対して適用されるラムダ関数です。ラムダ関数。 -source_arr— 処理対象のソースArray。Array(T)。 -[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件Array。Array(T)。
λ が真ではないソースArray内の最後の要素を返します。該当する要素がない場合は NULL を返します。
例
使用例
Query
Response
Query
Response
arrayLevenshteinDistance
導入バージョン: v25.4.0 2つの配列のレーベンシュタイン距離を計算します。 構文Float64
例
使用例
Query
Response
arrayLevenshteinDistanceWeighted
導入バージョン: v25.4.0 各要素にカスタムの重みを設定した、2つのArrayのレーベンシュタイン距離を計算します。 Arrayとその重みの要素数は一致している必要があります。 構文from— 第1の配列。Array(T)。 -to— 第2の配列。Array(T)。 -from_weights— 第1の配列の重み。Array((U)Int*|Float*)to_weights— 第2の配列の重み。Array((U)Int*|Float*)
Float64
例
使用例
Query
Response
arrayMap
導入バージョン: v1.1.0 元のArrayの各要素にラムダ関数を適用して得られるArrayを返します。 構文Array(T)
例
使用例
Query
Response
Query
Response
arrayMax
導入バージョン: v21.1.0 ソース配列内の最大の要素を返します。 ラムダ関数func が指定されている場合は、その評価結果の最大値を返します。
構文
func(x[, y1, ..., yN])— 任意。ソース配列 (x) と条件配列 (y) の要素に対して処理を行うラムダ関数です。ラムダ関数source_arr— 処理対象のソース配列です。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)
Query
Response
Query
Response
arrayMin
導入バージョン: v21.1.0 ソース配列内の最小要素を返します。 ラムダ関数func が指定されている場合は、ラムダ関数の結果のうち最小の要素を返します。
構文
func(x[, y1, ..., yN])— オプション。ソース配列 (x) および条件配列 (y) の要素に対して処理を行うラムダ関数。ラムダ関数source_arr— 処理対象のソース配列。Array(T)cond1_arr, ...— オプション。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Query
Response
Query
Response
arrayNormalizedGini
導入バージョン: v25.1.0 正規化ジニ係数を計算します。 構文Tuple(Float64, Float64, Float64)
例
使用例
Query
Response
arrayPartialReverseSort
導入バージョン: v23.2.0 この関数はarrayReverseSort と同じですが、limit 引数を追加することで部分ソートを行えます。
この関数は非決定論的です。同じ引数でも異なる結果を返すことがあります。
f(arr[, arr1, ... ,arrN])— 配列xの要素に適用するラムダ関数。ラムダ関数limit— どこまでソートするかを示す索引値。(U)Int*arr— ソート対象の配列。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合に指定する、追加の N 個の配列。Array(T)
[1..limit] の要素が
降順にソートされます。残りの要素 (limit..N] の順序は未規定です。
例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialShuffle
導入バージョン: v23.2.0 元の配列と同じサイズの配列を返します。この配列では、[1..limit] の範囲の要素が元の配列からランダムに選ばれた
部分集合となります。残りの (limit..n] には、[1..limit] の範囲に含まれない要素が未定義の順序で格納されます。
limit の値は [1..n] の範囲内である必要があります。この範囲外の値を指定した場合は、完全な arrayShuffle を実行するのと同等です。
この関数は定数をマテリアライズしません。
limit の値は [1..N] の範囲内である必要があります。この範囲外の値を指定した場合は、完全な arrayShuffle を実行するのと同等です。この関数は非決定論的です。同じ引数に対して異なる結果を返すことがあります。
arr— シャッフルする配列。Array(T)seed— 任意。乱数生成に使用するシード値です。指定しない場合はランダムな値が使用されます。(U)Int*limit— 任意。要素の入れ替え回数を[1..N]の範囲に制限するための数値です。(U)Int*
Array(T)
例
no_limit1
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialSort
導入バージョン: v23.2.0 この関数はarraySort と同じですが、部分ソートを行うための limit 引数が追加されています。
この関数は非決定論的です。同じ引数に対して異なる結果を返すことがあります。
f(arr[, arr1, ... ,arrN])— 配列xの要素に適用するラムダ関数です。ラムダ関数limit— ソートを行う範囲の終端を表す索引値です。(U)Int*arr— ソートする Array です。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合に使用する、追加の N 個の配列です。Array(T)
[1..limit] の要素が
昇順にソートされます。残りの要素 (limit..N] の順序は未定です。
例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPopBack
導入バージョン: v1.1.0 配列の最後の要素を削除します。 構文arr— 末尾の要素を削除する配列です。Array(T)
arr と同じ配列から末尾の要素を取り除いた配列を返します。Array(T)
例
使用例
Query
Response
arrayPopFront
導入バージョン: v1.1.0 配列の先頭の要素を取り除きます。 構文arr— 先頭の要素を削除する配列です。Array(T)
arr と同じですが、arr の先頭要素を除いた配列を返します Array(T)
例
使用例
Query
Response
arrayProduct
導入バージョン: v21.1.0 ソース配列内の要素の積を返します。 ラムダ関数func が指定されている場合は、そのラムダ関数の結果の各要素の積を返します。
構文
func(x[, y1, ..., yN])— 任意。ソース配列 (x) と条件配列 (y) の要素に対して処理を行うラムダ関数。ラムダ関数source_arr— 処理対象のソース配列。Array(T)[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Float64
例
基本例
Query
Response
Query
Response
arrayPushBack
導入バージョン: v1.1.0 配列の末尾に要素を 1 つ追加します。 構文- 数値の配列に追加できるのは数値のみで、文字列の配列に追加できるのは文字列のみです。
- 数値を追加する場合、ClickHouse は配列のデータ型に合わせて
xの型を自動的に設定します。 NULLを指定できます。この関数は配列にNULL要素を追加し、配列要素の型はNullableに変換されます。
arr と同じ内容で、配列の末尾に追加の値 x が加わった配列を返します。Array(T)
例
使用例
Query
Response
arrayPushFront
導入バージョン: v1.1.0 配列の先頭に要素を 1 つ追加します。 構文- 数値の配列には数値のみ、文字列の配列には文字列のみを追加できます。
- 数値を追加する場合、ClickHouse は配列のデータ型に合わせて
xの型を自動的に設定します。 NULLも指定できます。この関数は配列にNULL要素を追加し、配列要素の型はNullableに変換されます。
arr と同一ですが、配列の先頭に追加の値 x が含まれる配列を返します Array(T)
Examples
Usage example
Query
Response
arrayROCAUC
導入バージョン: v20.4.0 receiver operating characteristic (ROC) 曲線下面積を計算します。 ROC 曲線は、すべてのしきい値にわたって、y 軸に True Positive Rate (TPR) 、x 軸に False Positive Rate (FPR) をプロットして作成されます。scale をデフォルトの true に設定した場合、返される値は 0 から 1 の範囲で、値が大きいほどモデルの性能が高いことを示します。また、ROC AUC が undefined の場合、たとえば正例ラベルまたは負例ラベルが存在しない場合、結果は NaN になります。
NaN のスコアは常に NaN の結果を返します。
ROC AUC (単に AUC とも呼ばれます) は、機械学習における概念です。
詳細については、こちら、こちら、およびこちらを参照してください。
構文
arrayAUC
引数
scores— 予測モデルが出力するスコア。Array((U)Int*)またはArray(Float*)labels— サンプルのラベル。通常、正例には 1、負例には 0 を使用します。Array((U)Int*)またはEnumscale— 任意。正規化された面積を返すかどうかを指定します。false の場合は、代わりに TP (真陽性) x FP (偽陽性) 曲線の下の面積を返します。デフォルト値: true。Boolpartial_offsets—- AUC 全体ではなく ROC 曲線の部分面積 (ROC 空間の縦方向の帯に相当) を計算するための、4 つの非負整数からなる配列です。このオプションは、ROC AUC の分散計算に役立ちます。配列には次の要素を含める必要があります: [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]。Array の非負の Integers。任意です。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] のスコアを含めることができます。
NaN が含まれる場合は NaN を返します。また、scale が true の場合、正例ラベルまたは負例ラベルが存在せず ROC AUC が undefined となるときにも NaN を返します。Float64
例
使用例
Query
Response
arrayRandomSample
導入バージョン: v23.10.0 入力配列から、ランダムに選択したsamples 個の要素からなる部分集合を返します。samples が入力配列のサイズを超える場合、サンプル数は配列のサイズに制限されます。つまり、配列のすべての要素が返されますが、その順序は保証されません。この関数は、フラットな配列とネストされた配列の両方を扱えます。
この関数は非決定論的です。つまり、同じ引数に対しても異なる結果を返すことがあります。
Array(T)
例
使用例
Query
Response
Query
Response
arrayReduce
導入バージョン: v1.1.0 配列要素に集約関数を適用し、その結果を返します。 集約関数の名前は、'max'、'sum' のようにシングルクォートで囲んだ文字列として渡します。
パラメトリック集約関数を使用する場合、パラメータは 'uniqUpTo(6)' のように関数名の後のかっこ内で指定します。
構文
Query
Response
Query
Response
Query
Response
arrayReduceInRanges
導入バージョン: v20.4.0 指定した範囲内の配列要素に集約関数を適用し、各範囲に対応する結果を格納した配列を返します。 この関数は、arrayReduce(agg_func, arraySlice(arr1, index, length), ...) を複数回実行した場合と同じ結果を返します。
構文
agg_f— 使用する aggregate function の名前。Stringranges— 集約する範囲。集約を開始する索引iと、集約対象の範囲rを含む(i, r)形式の Tuple の配列。Array(T)またはTuple(T)arr1[, arr2, ... ,arrN]— aggregate function に渡す N 個の配列。Array(T)
Array(T)
例
使用例
Query
Response
arrayRemove
導入バージョン: v25.11.0 配列から、指定した値と等しい要素をすべて削除します。 NULL は等しいものとして扱われます。 構文array_remove
引数
arr— Array(T) -elem— T
Array(T) を返します
例
例 1
Query
Response
Query
Response
arrayResize
導入バージョン: v1.1.0 配列の長さを変更します。 構文arr— リサイズ対象の Array。Array(T)size— -Array の新しい長さ。sizeが Array の元のサイズより小さい場合、Array は右側から切り詰められます。sizeが Array の初期サイズより大きい場合、Array は右側にextenderの値、または Array 要素のデータ型のデフォルト値で拡張されます。extender— Array の拡張に使用する値。NULLを指定できます。
size の Array。Array(T)
例
例 1
Query
Response
Query
Response
arrayReverse
導入バージョン: v1.1.0 指定された配列の要素の並び順を逆にします。関数
reverse(arr) も同じ機能を持ち、Array に加えて他のデータ型にも対応しています。arr— 反転する配列。Array(T)
Array(T)
例
使用例
Query
Response
arrayReverseFill
導入バージョン: v20.1.0arrayReverseFill 関数は、ソース配列を末尾の
要素から先頭の要素へ順に処理し、各位置でソース配列および条件配列の要素を使って
ラムダ条件を評価します。位置 i で条件の評価結果が false の場合、
この関数はその要素を、配列の現在の状態における位置 i+1 の要素で
置き換えます。最後の要素は、条件にかかわらず
常に保持されます。
構文
func(x[, y1, ..., yN])— ソース配列 (x) と条件配列 (y) の要素に対して動作するラムダ関数です。ラムダ関数source_arr— 処理対象のソース配列です。Array(T)[, cond1_arr, ... , condN_arr]— 任意です。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)
Array(T)
例
単一の配列を使った例
Query
Response
Query
Response
arrayReverseSort
導入バージョン: v1.1.0 配列の要素を降順にソートします。 関数f が指定されている場合、指定した配列は、その配列要素に関数を適用した結果に基づいてソートされた後、反転されます。
f が複数の引数を受け取る場合、arrayReverseSort 関数には複数の配列が渡され、これらは func の各引数に対応します。
ソート対象の配列に -Inf、NULL、NaN、または Inf が含まれている場合、これらは次の順序でソートされます。
-InfInfNaNNULL
arrayReverseSort は高階関数です。
構文
f(y1[, y2 ... yN])— 配列xの要素に適用するラムダ関数。 -arr— ソートする配列。Array(T)-arr1, ..., arrN— 任意。fが複数の引数を受け取る場合に指定する、追加の N 個の配列。
x を降順にソートして返します。指定されている場合は、
指定されたラムダ関数のロジックに従って配列をソートし、その後で反転した配列を返します。 Array(T)。
例
例 1
Query
Response
Query
Response
arrayReverseSplit
導入バージョン: v20.1.0 ソース配列を複数の配列に分割します。func(x[, y1, ..., yN]) が 0 以外の値を返した場合、その要素の右側で配列が分割されます。最後の要素の後では分割されません。
構文
func(x[, y1, ..., yN])— ソース配列 (x) および条件配列 (y) の要素に対して処理を行うラムダ関数です。ラムダ関数source_arr— 処理対象のソース配列です。ラムダ関数[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)
Array(Array(T))
例
使用例
Query
Response
arrayRotateLeft
導入バージョン: v23.8.0 配列を、指定した要素数だけ左に回転します。n の値が負の場合は、回転量の絶対値だけ右に回転するものとして扱われます。
構文
arr— 要素を回転させる対象の配列。Array(T)。 -n— 回転させる要素数。(U)Int8/16/32/64。
Array(T)
例
使用例
Query
Response
Query
Response
arrayRotateRight
導入バージョン: v23.8.0 配列を、指定した要素数だけ右に回転します。n が負の値の場合は、その絶対値の分だけ左に回転するものとして扱われます。
構文
arr— 要素をローテーションする配列。Array(T)。 -n— ローテーションする要素の数。(U)Int8/16/32/64。
Array(T)
例
使用例
Query
Response
Query
Response
arrayShiftLeft
導入バージョン: v23.8.0 指定した要素数だけ配列を左にシフトします。 新しい要素は、指定された引数または配列の要素型のデフォルト値で埋められます。 要素数が負の場合、配列は右にシフトされます。 構文arr— 要素をシフトする配列。Array(T)。 -n— シフトする要素数。(U)Int8/16/32/64。 -default— 任意。新たに追加される要素のデフォルト値。
Array(T)
例
使用例
Query
Response
Query
Response
Query
Response
arrayShiftRight
導入バージョン: v23.8.0 配列を指定した要素数だけ右にシフトします。 新しい要素は、指定した引数または配列の要素型のデフォルト値で埋められます。 要素数が負の場合、配列は左にシフトされます。 構文arr— 要素をシフトする対象の配列です。Array(T)n— シフトする要素の数です。(U)Int8/16/32/64default— 省略可。新しく作成される要素のデフォルト値です。
Array(T)
例
使用例
Query
Response
Query
Response
Query
Response
arrayShingles
導入バージョン: v24.1.0 シングルの配列 (文字列に対するN-gramに類似) を生成します。つまり、入力配列から指定した長さの連続した部分配列を生成します。 構文Array(T)
例
使用例
Query
Response
arrayShuffle
導入バージョン: v23.2.0 元の配列と同じサイズで、要素がシャッフルされた順序で格納された配列を返します。 要素は、考えられるすべての順列が同じ確率で現れるように並べ替えられます。この関数では定数はマテリアライズされません。
この関数は非決定論的です。同じ引数に対して異なる結果を返すことがあります。
Array(T)
例
seed を指定しない例 (結果は不安定)
Query
Response
Query
Response
arraySimilarity
導入バージョン: v25.4.0 重み付きレーベンシュタイン距離に基づいて、2 つの配列の類似度を0 から 1 の範囲で計算します。
構文
from— 1つ目の配列Array(T)to— 2つ目の配列Array(T)from_weights— 1つ目の配列の重み。Array((U)Int*|Float*)to_weights— 2つ目の配列の重み。Array((U)Int*|Float*)
0 から 1 の類似度を返します Float64
例
使用例
Query
Response
arraySlice
導入バージョン: v1.1.0 配列の一部を返します。NULL 要素も含まれます。
最初の引数には QBit も指定できます。この場合、結果は選択した次元上の QBit (次元の部分集合への射影) になります。QBit の次元はその型の一部であり、スライスでは少なくとも 1 つの次元を選択する必要があるため、この場合の offset と length は定数でなければなりません。QBit の stride-group 境界に揃ったスライスでは、ストライドが維持され、コピーを行わずに保存済みのビットプレーンストリームが再利用されます。
構文
arr— スライス対象の Array。Array(T)またはQBitoffset— 配列の端からの位置。正の値は左側からのオフセット、負の値は右側からのインデントを示します。配列要素の番号は1から始まります。(U)Int*length— 必要なスライスの長さ。負の値を指定すると、関数は開区間のスライス[offset, array_length - length]を返します。値を省略すると、関数はスライス[offset, the_end_of_array]を返します。(U)Int*
offset から length 個の要素を含む配列のスライスを返します。Array(T)
例
使用例
Query
Response
arraySort
導入バージョン: v1.1.0 指定された配列の要素を昇順にソートします。 ラムダ関数f が指定されている場合、ソート順は
配列の各要素にラムダを適用した結果によって決まります。
ラムダが複数の引数を受け取る場合、arraySort 関数には複数の
配列が渡され、それぞれが f の引数に対応します。
ソート対象の配列に -Inf、NULL、NaN、または Inf が含まれている場合、これらは次の順序でソートされます。
-InfInfNaNNULL
arraySort は高階関数です。
構文
f(y1[, y2 ... yN])— 配列xの要素に適用するラムダ関数。 -arr— ソートする配列。Array(T)-arr1, ..., arrN— 任意。fが複数の引数を受け取る場合に指定する、追加の N 個の配列。
arr を昇順にソートして返します。
指定されている場合は、指定されたラムダ関数のロジックに従ってソートされた配列を返します。 Array(T).
例
例 1
Query
Response
Query
Response
Query
Response
arraySplit
導入バージョン: v20.1.0 ソース配列を複数の配列に分割します。func(x [, y1, ..., yN]) が 0 以外の値を返した場合、その要素の左側で配列が分割されます。最初の要素の前では配列は分割されません。
構文
func(x[, y1, ..., yN])— ソース配列 (x) および条件配列 (y) の要素に対して適用されるラムダ関数です。ラムダ関数。 -source_arr— 分割対象のソース配列Array(T)。 -[, cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列です。Array(T)。
Array(Array(T))
例
使用例
Query
Response
arraySum
導入バージョン: v21.1.0 ソース配列内の要素の合計を返します。 ラムダ関数func が指定されている場合は、ラムダ関数の結果の合計を返します。
構文
func(x[, y1, ..., yN])— 任意。ソース配列 (x) と条件配列 (y) の要素に対して処理を行うラムダ関数。ラムダ関数source_arr— 処理対象のソース配列。Array(T), cond1_arr, ... , condN_arr]— 任意。ラムダ関数に追加の引数を渡す N 個の条件配列。Array(T)
Query
Response
Query
Response
arraySymmetricDifference
導入バージョン: v25.4.0 複数のArrayを受け取り、すべてのソースArrayに共通して含まれるわけではない要素からなるArrayを返します。結果には一意の値のみが含まれます。2 つを超える集合の対称差は、数学的には
奇数個の入力集合に現れるすべての入力要素からなる集合として定義されます。
一方、関数
arraySymmetricDifference は、すべての入力集合に共通して含まれるわけではない入力要素の集合を単純に返します。arrN— 新しいArrayの作成元となる N 個のArray。Array(T)。
Array(T)
例
使用例
Query
Response
arrayTopK
導入バージョン: v26.6.0 入力配列から大きい要素を上位 K 個取り出し、降順にソートされた配列を返します。 ラムダ関数f が指定されている場合、各要素に f を適用した結果に基づいて要素が比較されます。
f が複数の引数を受け取る場合は、追加の配列が arrayTopK に渡され、それらの要素が
f の引数に対応します。
NULL 値はスキップされ、結果には含まれません。結果のサイズは最大 K で、
入力配列に K 個未満の非 NULL 要素しか含まれていない場合は、それより小さくなることがあります。
結果の要素型は、入力要素型に対応する非 Nullable 型です。
arrayTopK は 高階関数 です。
代わりに、最も小さい要素を下位 K 個返す arrayBottomK も参照してください。
構文
f(arr[, arr1, ... ,arrN])— 省略可能。各要素のソートキーを計算するためのラムダ関数。ラムダ関数K— 返す最大要素数。(U)Int8/16/32/64arr— 配列。Array(T)arr1, ... ,arrN—fが複数の引数を受け取る場合の、追加のN個の配列。Array(T)
arr のうち値が大きい要素 (またはラムダ関数の結果が大きい要素) を最大 K 個まで、降順にソートして返します。
NULL はスキップされます。返される配列の要素型は、入力が Nullable(T) 型の場合でも T です。
例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayTranspose
導入バージョン: v26.4.0 二次元配列を転置します。 すべての内部配列は同じ長さである必要があります。 構文arr— 転置する二次元配列。すべての内部配列は同じ長さである必要があります。Array(Array(T))
[i][j] が入力の要素 [j][i] に等しくなる、転置後の二次元配列。Array(Array(T))
例
正方行列
Query
Response
Query
Response
Query
Response
arrayUnion
導入バージョン: v24.10.0 複数の配列を受け取り、いずれかのソース配列に含まれるすべての要素から成る配列を返します。結果には一意の値のみが含まれます。 構文arrN— 新しい配列の作成元となる N 個の配列。Array(T)
Array(T)
例
使用例
Query
Response
arrayUniq
導入バージョン: v1.1.0 引数が 1 つの場合は、配列内の異なる要素の数を数えます。 引数が複数の場合は、複数の配列の対応する位置にある要素から構成される、異なるタプルの数を数えます。 たとえば、SELECT arrayUniq([1,2], [3,4], [5,6]) は次のタプルを形成します。
- 位置 1: (1,3,5)
- 位置 2: (2,4,6)
2 です。
渡すすべての配列は同じ長さである必要があります。
構文
arr1— 一意な要素数を数える対象の Array。Array(T)[, arr2, ..., arrN]— 任意。複数の Array の対応する位置にある要素から構成される、一意な タプル の数を数えるための追加の Array。Array(T)
UInt32
例
単一引数
Query
Response
Query
Response
arrayWithConstant
導入バージョン: v20.1.0 定数x で埋めた長さ length の配列を作成します。
構文
length— 配列の要素数。(U)Int*x— 配列のN個の要素の値。型は任意です。
x の N 個の要素で構成される Array を返します。Array(T)
例
使用例
Query
Response
arrayZip
導入バージョン: v20.1.0 複数の配列を 1 つの配列に結合します。結果の配列には、ソース配列の対応する要素が、引数に記載された順序でタプルにまとめられて格納されます。 構文arr1, arr2, ... , arrN— 1 つの配列に結合するための N 個の配列。Array(T)
Array(T)
例
使用例
Query
Response
arrayZipUnaligned
導入バージョン: v20.1.0 複数の配列を 1 つの配列に結合します。長さの異なる配列同士でも結合できます。結果の配列には、ソース配列の対応する要素が、引数に列挙された順序でタプルとしてまとめられて格納されます。 構文arr1, arr2, ..., arrN— 1つの配列に結合する N 個の配列。Array(T)
Array(T) または Tuple(T1, T2, ...)
例
使用例
Query
Response
countEqual
導入バージョン: v1.1.0 配列内でx に等しい要素の数を返します。arrayCount(elem -> elem = x, arr) と同等です。
NULL 要素は独立した値として扱われます。
構文
arr— 検索対象の Array。Array(T)x— 配列内で個数を数える値。任意の型。
x に等しい要素の数を返します。UInt64
例
使用例
Query
Response
empty
導入バージョン: v1.1.0 入力された配列が空かどうかを判定します。 配列に要素が1つも含まれていない場合、その配列は空と見なされます。optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1 の場合、この関数は配列カラム全体を読み取って処理する代わりに、size0 サブカラムのみを読み取ります。クエリ SELECT empty(arr) FROM TABLE; は SELECT arr.size0 = 0 FROM TABLE; に変換されます。arr— 入力Array。Array(T)
1、空でないArrayの場合は 0 を返します。UInt8
例
使用例
Query
Response
emptyArrayDate
導入バージョン: v1.1.0 Date 型の空の配列を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayDateTime
導入バージョン: v1.1.0 空のDateTime配列を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayFloat32
導入バージョン: v1.1.0 空の Float32 型の配列を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayFloat64
導入バージョン: v1.1.0 空のFloat64 Arrayを返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayInt16
導入バージョン: v1.1.0 空の Int16 型の配列を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayInt32
導入バージョン: v1.1.0 空の Int32 Array を返します 構文- なし
Array(T)
例
使用例
Query
Response
emptyArrayInt64
導入バージョン: v1.1.0 空の Int64 Array を返します 構文- なし
Array(T)
例
使用例
Query
Response
emptyArrayInt8
導入バージョン: v1.1.0 空の Int8 Array を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayString
導入バージョン: v1.1.0 空のStringArrayを返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayToSingle
導入バージョン: v1.1.0 空のArrayを受け取り、デフォルト値に等しい1要素のArrayを返します。 構文arr— 空のArray。Array(T)
Array(T)
例
基本例
Query
Response
emptyArrayUInt16
導入バージョン: v1.1.0 空の UInt16 のArrayを返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayUInt32
導入バージョン: v1.1.0 空の UInt32 Array を返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayUInt64
導入バージョン: v1.1.0 空の UInt64 Arrayを返します 構文- なし。
Array(T)
例
使用例
Query
Response
emptyArrayUInt8
導入バージョン: v1.1.0 空の UInt8 配列を返します 構文- なし。
Array(T)
例
使用例
Query
Response
has
導入バージョン: v1.1.0 Array に指定した要素、Map に指定したキー、または JSONオブジェクト に指定したパスが含まれているかどうかを返します。 JSON では、ドット記法 (例: ‘a.b.c’) を使ってネストされたパスを指定できます。 最初の引数が定数 Array で、2 番目の引数がカラムまたは式である場合、has(constant_array, column) は column IN (constant_array) と同様に動作し、最適化のために主キーやデータスキッピング索引を利用できます。たとえば、id が PRIMARY KEY の一部であれば、has([1, 10, 100], id) は主キー索引を活用できます。
この最適化は、カラムが単調関数でラップされている場合にも適用されます (例: has([...], toDate(ts))) 。
構文
haystack— ソース配列、Map、または JSON。ArrayまたはMapまたはJSONneedle— 検索する値 (配列内の要素、Map のキー、または JSON のパス文字列) 。
haystack に指定した needle が含まれている場合は 1、含まれていない場合は 0 を返します。UInt8
例
Array の基本的な使い方
Query
Response
Query
Response
Query
Response
Query
Response
hasAll
導入バージョン: v1.1.0 一方のArrayがもう一方のArrayの部分集合であるかどうかを判定します。- 空のArrayは、任意のArrayの部分集合です。
Nullは値として処理されます。- どちらのArrayでも、値の順序は関係ありません。
set— 要素の集合を持つ、任意の型の Array。Array(T)subset—setと共通のスーパータイプを持ち、setの部分集合かどうかを判定する対象の要素を含む、任意の型の Array。Array(T)
1—setにsubsetのすべての要素が含まれる場合。0— それ以外の場合。
set と subset の要素が共通のスーパータイプを持たない場合は、NO_COMMON_TYPE 例外が発生します。
例
空のArray
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasAny
導入バージョン: v1.1.0 2 つのArrayに共通する要素があるかどうかを判定します。Nullは値として処理されます。- どちらのArrayでも、値の順序は問いません。
1—arr_xとarr_yに共通する要素が少なくとも 1 つある場合。0— それ以外の場合。
NO_COMMON_TYPE 例外が発生します。
例
一方の Array が空の場合
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasSubstr
導入バージョン: v20.6.0 array2 のすべての要素が、array1 にまったく同じ順序で現れるかどうかを確認します。 したがって、この関数は array1 = プレフィックス + array2 + 接尾辞 の場合にのみ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を返します。- 両方のArrayにおける値の順序は重要です。
NO_COMMON_TYPE 例外を発生させます。
構文
arr1 がArray arr2 を含む場合は 1、それ以外の場合は 0 を返します。UInt8
例
両方のArrayが空の場合
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
indexOf
導入バージョン: v1.1.0 配列内に値 ‘x’ を持つ最初の要素がある場合、その位置 (1 から始まる) を返します。 配列に検索対象の値が含まれていない場合、関数は0 を返します。
NULL に設定された要素も通常の値として扱われます。
NaN 要素には、上記の NULL ルールは適用されません。
2 つの NaN 値のスカラー比較 (NaN = NaN) は 0 ですが、indexOf では NaN 要素が見つかったものとして報告される場合があります。
その動作は実装の詳細です。特定の動作に依存しないでください。
NaN 要素を見つけるには、次のようにテストします。arrayFirstIndex(x -> isNaN(x), arr) はその位置を返し、arrayExists(x -> isNaN(x), arr) はフラグを返します。
構文
arr に x が存在する場合は、最初の x の索引 (1 から始まる番号) を返します。存在しない場合は 0 を返します。UInt64
例
基本例
Query
Response
Query
Response
indexOfAssumeSorted
導入バージョン: v24.12.0 配列内に値 ‘x’ を持つ要素がある場合、その最初の要素の位置 (1 から始まる) を返します。
配列に検索対象の値が含まれていない場合、この関数は 0 を返します。
indexOf 関数とは異なり、この関数は配列が昇順に
ソートされていることを前提としています。配列がソートされていない場合、結果は未定義です。arr 内に x が存在する場合は、最初の x の索引 (1 から始まる) を返します。存在しない場合は、0 を返します。UInt64
例
基本例
Query
Response
length
導入バージョン: v1.1.0 文字列またはArrayの長さを計算します。- String または FixedString 引数の場合: 文字列のバイト数を計算します。
- Array 引数の場合: Array の要素数を計算します。
- QBit 引数の場合: ベクトルの次元を計算します。
- FixedString または QBit 引数に適用した場合、この関数は定数式になります。
OCTET_LENGTH, CARDINALITY
引数
x— バイト数 (String/FixedString の場合)、要素数 (Array の場合)、または次元数 (QBit の場合) を計算する値。StringまたはFixedStringまたはArray(T)またはQBit
x のバイト数、Array x の要素数、または QBit x の次元数を返します。UInt64
例
Stringの例
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
notEmpty
導入バージョン: v1.1.0 入力された Array が空でないかどうかを確認します。 Array は、少なくとも 1 つの要素を含んでいれば空ではないと見なされます。optimize_functions_to_subcolumns 設定を有効にすると、この関数を最適化できます。optimize_functions_to_subcolumns = 1 の場合、この関数は Array 全体のカラムを読み取って処理する代わりに、size0 サブカラムだけを読み取ります。クエリ SELECT notEmpty(arr) FROM table は SELECT arr.size0 != 0 FROM TABLE に変換されます。arr— 入力配列。Array(T)
1、空の配列の場合は 0 を返します。UInt8
例
使用例
Query
Response
notHas
導入バージョン: v26.8.0 配列に指定した要素が含まれていない、マップに指定したキーが含まれていない、または JSON オブジェクトに指定したパスが存在しないかどうかを返します。has の否定です。
構文
1、含まれる場合は0を返します。UInt8
例
Arrayの基本的な使い方
Query
Response
Query
Response
Query
Response
Query
Response
randomHadamardTransform
導入バージョン: v26.7.0 浮動小数点ベクトルにランダム化 Hadamard 変換を適用します:y = (1/sqrt(k)) * (H * D * x)。ここで、
D は seed によって決まる決定論的な +/-1 符号の対角行列、H は Walsh-Hadamard
変換です。
この変換は、ベクトルのエネルギーを各座標に均等に分散させる直交なノルム保存回転であり、
各座標の分布をおおむねガウス分布にし、かつ
データ非依存にします。スカラー量子化の前処理として有用であり、また —
切り詰めた場合には — Johnson-Lindenstrauss / subsampled-randomized-Hadamard (SRHT) のランダム射影としても利用できます。
完全変換 (切り詰めなし) では、入力長はそのまま保持されます。次の長さでは厳密です:
- 2 のべき乗 (通常の高速 Walsh-Hadamard 変換) ;
mが{12, 20}に含まれる2^k * m(+/-1Hadamard 行列を持つ次数。たとえば768 = 64 * 12,1536 = 128 * 12,3072 = 256 * 12,2560 = 128 * 20) 。これは厳密な Kronecker 変換H_(2^k) (x) H_mとして適用されます (浮動小数点乗算なし) ;64以下の、それ以外の任意の奇数mに対する2^k * m(+/-1Hadamard 行列を持たない次数 — そのような行列が存在するのは次数1、2、および4の倍数のみです) 。これは厳密な Kronecker 変換H_(2^k) (x) C_mとして適用され、ここでC_mは実直交な Discrete Hartley Transform 行列です。これにより3584 = 512 * 7、1152 = 128 * 9、1408 = 128 * 11のような残りの埋め込みファミリーもカバーされます。
64 を超える長さに対する完全変換には厳密な形がなく、より長い 2 のべき乗長への
ゼロ埋めが必要になります。そのため、黙ってより長いベクトルを返すのではなく、例外として拒否されます。
サポートされている長さを使用するか、output_dims を渡して任意長の切り詰め射影を計算してください
(下記参照) 。
結果の要素型は入力と同じです。空の入力配列を渡すと、空の配列が返されます
(output_dims はこれには適用されません)。
seed(省略可、デフォルト0) : 符号パターンを選択します。同じ seed では常に同じ 変換が得られます。output_dims(省略可、デフォルトは変換長) : 先頭のoutput_dims個の座標だけを残し、この変換を 任意の 長さを受け付けるランダム射影にします。この1/sqrt(output_dims)のスケーリングにより、完全変換では結果のノルムが保存され、 切り詰め時には期待値の意味でノルムが保存されます。これは変換長を超えてはいけません。なぜなら、 Discrete Hartley 因子C_mの切り詰められたプレフィックスは、+/-1Hadamard 行列のような 一様なレバレッジを持たないため、Hartley ファミリーの長さ (または厳密な因子を持たない任意の長さ) でoutput_dimsによる切り詰めを行う場合は、ゼロ埋めした 2 のべき乗変換が使われます。こちらはその性質を保ちます。
vector— 変換するベクトル。Array(BFloat16)またはArray(Float32)またはArray(Float64)seed— 省略可能。決定論的な +/-1 符号のシード (デフォルトは 0) 。UInt*output_dims— 省略可能。結果を先頭からこの数の座標に切り詰めます (デフォルトは完全変換の長さ全体で、サポートされているすべての次元で入力長と同じです) 。output_dims を指定すると、厳密な完全変換形式がない長さでも変換が有効になります。UInt*
Array(BFloat16) または Array(Float32) または Array(Float64)
例
2 の累乗長に対する完全変換
Query
Response
Query
Response
Query
Response
Query
Response
range
導入バージョン: v1.1.0start から 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。Array(T)
例
使用例
Query
Response
replicate
導入バージョン: v1.1.0 単一の値を含むArrayを作成します。 構文arr と同じ長さで、各要素が値 x のArrayを返します。Array(T)
例
使用例
Query
Response
reverse
導入バージョン: v1.1.0 入力Array の要素の並び、または入力文字列内の文字の並びを逆順にします。
構文
Query
Response
Query
Response