メインコンテンツまでスキップ
メインコンテンツまでスキップ

配列関数

empty

入力配列が空かどうかを確認します。

構文

配列には要素が含まれていない場合、空と見なされます。

注記

optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1の場合、関数は配列全体を読み込んで処理するのではなく、size0 サブカラムのみを読み取ります。クエリ SELECT empty(arr) FROM TABLE;SELECT arr.size0 = 0 FROM TABLE; に変換されます。

この関数は文字列UUIDにも適用できます。

引数

  • [x] — 入力配列。配列

返される値

  • 空の配列の場合は 1、非空の配列の場合は 0 を返します。UInt8

クエリ:

結果:

notEmpty

入力配列が非空かどうかを確認します。

構文

配列には少なくとも1つの要素が含まれている場合、非空と見なされます。

注記

optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1の場合、関数は配列全体を読み込んで処理するのではなく、size0 サブカラムのみを読み取ります。クエリ SELECT notEmpty(arr) FROM tableSELECT arr.size0 != 0 FROM TABLE に変換されます。

この関数は文字列UUIDにも適用できます。

引数

  • [x] — 入力配列。配列

返される値

  • 非空の配列の場合は 1、空の配列の場合は 0 を返します。UInt8

クエリ:

結果:

length

配列内の要素数を返します。 結果の型は UInt64 です。 この関数は文字列にも適用できます。

optimize_functions_to_subcolumns 設定を有効にすることで最適化できます。optimize_functions_to_subcolumns = 1の場合、関数は配列全体を読み込んで処理するのではなく、size0 サブカラムのみを読み取ります。クエリ SELECT length(arr) FROM tableSELECT arr.size0 FROM TABLE に変換されます。

別名: OCTET_LENGTH

emptyArrayUInt8

空の UInt8 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayUInt16

空の UInt16 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayUInt32

空の UInt32 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayUInt64

空の UInt64 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayInt8

空の Int8 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayInt16

空の Int16 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayInt32

空の Int32 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayInt64

空の Int64 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayFloat32

空の Float32 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayFloat64

空の Float64 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayDate

空の Date 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

emptyArrayDateTime

空の DateTime 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayString

空の String 配列を返します。

構文

引数

なし。

返される値

空の配列。

クエリ:

結果:

emptyArrayToSingle

空の配列を受け入れ、デフォルト値と等しい1要素の配列を返します。

range(end), range([start, ] end [, step])

指定された start から end - 1 までの数値の配列を step 刻みで返します。サポートされる型は UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64 です。

構文

引数

  • start — 配列の最初の要素。オプションで、step が使用される時は必要です。デフォルト値: 0。
  • end — 配列が構築される前の数値。必須。
  • step — 配列内の各要素間の増加ステップを決定します。オプション。デフォルト値: 1。

返される値

  • start から end - 1 までの数値の配列を step 刻みで返します。

実装の詳細

  • すべての引数 startendstep はデータ型: UInt8UInt16UInt32UInt64Int8Int16Int32Int64 のいずれかでなければなりません。また、返される配列の要素もすべての引数のスーパータイプでなければなりません。
  • クエリの結果がfunction_range_max_elements_in_block 設定で指定された要素数を超える配列になると例外が発生します。
  • いずれかの引数が Nullable(Nothing) 型の場合、Null を返します。いずれかの引数が Null 値 (Nullable(T) 型) の場合、例外が発生します。

クエリ:

結果:

array(x1, ...), operator [x1, ...]

関数引数から配列を作成します。 引数は定数でなければならず、最小の共通型を持っていなければなりません。少なくとも1つの引数を渡す必要があります。そうでないと、どの型の配列を作成するか不明です。つまり、この関数を使用して空の配列を作成することはできません(それを行うには、上記で説明した 'emptyArray*' 関数を使用してください)。 渡された引数の最小の共通型から 'Array(T)' 型の結果を返します。

arrayWithConstant(length, elem)

定数 elem で埋められた長さ length の配列を作成します。

arrayConcat

引数として渡された配列を結合します。

引数

  • arrays – 任意の数の配列型の引数。

arrayElement(arr, n), operator arr[n]

配列 arr からインデックス n の要素を取得します。n は任意の整数型でなければなりません。 配列のインデックスは1から始まります。

負のインデックスもサポートされています。この場合、最後から番号が付けられた対応する要素を選択します。たとえば、arr[-1] は配列の最後のアイテムです。

インデックスが配列の範囲外にある場合、デフォルト値(数値であれば0、文字列であれば空文字列など)が返されますが、非定数の配列と定数インデックス0の場合、エラー Array indices are 1-based が発生します。

has(arr, elem)

'arr' 配列に 'elem' 要素が存在するかどうかを確認します。 要素が配列に含まれていない場合は0を、含まれている場合は1を返します。

NULL は値として処理されます。

arrayElementOrNull(arr, n)

配列 arr からインデックス n の要素を取得します。n は任意の整数型でなければなりません。 配列のインデックスは1から始まります。

負のインデックスもサポートされています。この場合、最後から番号が付けられた対応する要素を選択します。たとえば、arr[-1] は配列の最後のアイテムです。

インデックスが配列の範囲外の場合、デフォルト値の代わりに NULL を返します。

hasAll

1つの配列が別の配列の部分集合であるかどうかを確認します。

引数

  • set – 任意の型の要素のセットを持つ配列。
  • subsetsetの部分集合であるべき要素を含む、set と共通のスーパータイプを共有する任意の型の配列。

返される値

  • 1setsubset のすべての要素が含まれている場合。
  • 0、それ以外の場合。

NO_COMMON_TYPE の例外が、セットとサブセットの要素が共通のスーパータイプを共有しない場合に発生します。

特性

  • 空の配列は任意の配列の部分集合です。
  • Null は値として処理されます。
  • 配列内の値の順序は重要ではありません。

SELECT hasAll([], []) は 1 を返します。

SELECT hasAll([1, Null], [Null]) は 1 を返します。

SELECT hasAll([1.0, 2, 3, 4], [1, 3]) は 1 を返します。

SELECT hasAll(['a', 'b'], ['a']) は 1 を返します。

SELECT hasAll([1], ['a'])NO_COMMON_TYPE の例外を発生させます。

SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) は 0 を返します。

hasAny

2つの配列に共通の要素があるかどうかを確認します。

引数

  • array1 – 任意の型の要素のセットを持つ配列。
  • array2array1 と共通のスーパータイプを共有する任意の型の配列。

返される値

  • 1、もし array1array2 に少なくとも1つの共通の要素がある場合。
  • 0、それ以外の場合。

NO_COMMON_TYPE の例外が、配列1と配列2の要素が共通のスーパータイプを共有しない場合に発生します。

特性

  • Null は値として処理されます。
  • 配列内の値の順序は重要ではありません。

SELECT hasAny([1], [])0 を返します。

SELECT hasAny([Null], [Null, 1])1 を返します。

SELECT hasAny([-128, 1., 512], [1])1 を返します。

SELECT hasAny([[1, 2], [3, 4]], ['a', 'c'])NO_COMMON_TYPE の例外を発生させます。

SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]])1 を返します。

hasSubstr

array1内のすべてのarray2の要素が正確に順番通りに存在するかどうかを確認します。したがって、関数はarray1 = prefix + array2 + suffixとなる場合にのみ1を返します。

言い換えれば、関数はすべての array2 の要素が array1 に含まれているかどうかをチェックし、hasAll 関数のように追加で array1array2 の両方で同じ順序で要素が観察されることを確認します。

例えば:

  • hasSubstr([1,2,3,4], [2,3]) は 1 を返します。しかし、hasSubstr([1,2,3,4], [3,2])0 を返します。
  • hasSubstr([1,2,3,4], [1,2,3]) は 1 を返します。しかし、hasSubstr([1,2,3,4], [1,2,4])0 を返します。

引数

  • array1 – 任意の型の要素のセットを持つ配列。
  • array2 – 任意の型の要素のセットを持つ配列。

返される値

  • 1、もし array1array2 を含む場合。
  • 0、それ以外の場合。

NO_COMMON_TYPE の例外が、配列1と配列2の要素が共通のスーパータイプを共有しない場合に発生します。

特性

  • array2 が空の場合、関数は 1 を返します。
  • Null は値として処理されます。言い換えれば、hasSubstr([1, 2, NULL, 3, 4], [2,3])0 を返します。しかし、hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])1 を返します。
  • 配列内の値の順序は重要です。

SELECT hasSubstr([], []) は 1 を返します。

SELECT hasSubstr([1, Null], [Null]) は 1 を返します。

SELECT hasSubstr([1.0, 2, 3, 4], [1, 3]) は 0 を返します。

SELECT hasSubstr(['a', 'b'], ['a']) は 1 を返します。

SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b']) は 1 を返します。

SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'c']) は 0 を返します。

SELECT hasSubstr([[1, 2], [3, 4], [5, 6]], [[1, 2], [3, 4]]) は 1 を返します。

SELECT hasSubstr([1, 2, NULL, 3, 4], ['a'])NO_COMMON_TYPE の例外を発生させます。

indexOf(arr, x)

値 'x' を持つ最初の要素のインデックスを返します(1から開始)。配列にその値が含まれていない場合、この関数は 0 を返します。

例:

NULL に設定された要素は通常の値として扱われます。

indexOfAssumeSorted(arr, x)

値 'x' を持つ最初の要素のインデックスを返します(1から開始)。配列にその値が含まれていない場合、この関数は 0 を返します。 配列が昇順にソートされていることを前提とします(つまり、関数は二分探索を使用します)。 配列がソートされていない場合、結果は未定義です。 内部配列が Nullable 型の場合、関数 'indexOf' が呼び出されます。

例:

arrayCount([func,] arr1, ...)

func(arr1[i], ..., arrN[i]) が 0 以外の何かを返す要素の数を返します。func が指定されていない場合、配列内の非ゼロの要素の数を返します。

arrayCount高階関数であることに注意してください。最初の引数としてラムダ関数を渡すことができます。

arrayDotProduct

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

構文

別名: scalarProduct, dotProduct

パラメーター

注記

2つのベクトルのサイズは等しくなければなりません。配列とタプルは、混合要素型を含むこともできます。

返される値

  • 2つのベクトルの内積。数値
注記

戻り値の型は引数の型によって決まります。配列やタプルに混合型の要素が含まれている場合、結果の型はスーパータイプとなります。

クエリ:

結果:

クエリ:

結果:

countEqual(arr, x)

配列内の要素で x と等しいものの数を返します。arrayCount (elem -> elem = x, arr) に相当します。

NULL 要素は別の値として扱われます。

例:

arrayEnumerate(arr)

配列 [1, 2, 3, ..., length (arr) ] を返します。

この関数は通常、ARRAY JOIN と共に使用されます。ARRAY JOIN を適用した後、各配列に対して何かを一度だけ数えることを可能にします。例:

この例では、Reaches はコンバージョン(ARRAY JOIN を適用した後に得られる文字列の数)を表し、Hits はページビュー(ARRAY JOIN の前の文字列の数)を示します。この特定のケースでは、次のように簡単に同じ結果を得ることも可能です:

この関数は高階関数でも使用できます。たとえば、条件に一致する要素の配列インデックスを取得するために使用できます。

arrayEnumerateUniq

ソース配列と同じサイズの配列を返し、各要素が同じ値を持つ要素の中でどの位置にあるかを示します。 例えば: arrayEnumerateUniq([10, 20, 10, 30]) = [1, 1, 2, 1]。

この関数は、ARRAY JOIN と配列要素の集約を使用する場合に役立ちます。 例:

この例では、各目標IDに対してコンバージョン数(Goals のネストされたデータ構造の各要素は達成された目標を示し、これをコンバージョンと呼びます)とセッション数の計算が行われています。ARRAY JOINを使用せずに、sum(Sign)としてセッション数をカウントします。ただし、この特定のケースでは、行がネストされたGoals構造によって乗算されているため、この後で各セッションを1回だけ数えるために、arrayEnumerateUniq(Goals.ID) 関数の値に条件を適用します。

arrayEnumerateUniq 関数は、同じサイズの複数の配列を引数として受け取ることができます。この場合、同じ位置の要素のタプルのユニーク性が考慮されます。

これは、ネストされたデータ構造に対してARRAY JOINを使用し、その構造内の複数の要素にわたる集約を行う際に必要です。

arrayEnumerateUniqRanked

ソース配列と同じサイズの配列を返し、各要素が同じ値を持つ要素の中で位置を示します。多次元配列を列挙し、内部の配列を探索する深さを指定する機能を提供します。

構文

パラメーター

  • clear_depth: 指定されたレベルで要素を個別に列挙します。正の整数(max_array_depth以下)でなければなりません。
  • arr: 列挙対象のN次元配列。配列
  • max_array_depth: 最大の有効深度。正の整数(arrの深さ以下)でなければなりません。

clear_depth=1max_array_depth=1の場合、arrayEnumerateUniqRanked の結果は、同じ配列に対する arrayEnumerateUniq の結果と同じになります。

クエリ:

結果:

この例では、arrayEnumerateUniqRanked を使用して、各多次元配列の要素が同じ値の要素の中でどの位置にあるかを示す配列を取得します。渡された配列の最初の行 [1,2,3] について、対応する結果は [1,1,1] となり、123 が初めて登場したことを示します。提供された配列の2番目の行 [2,2,1] に対しては、対応する結果は [2,3,3] となり、2 が2回目と3回目、1 が2回目に遭遇したことを示します。同様に、提供された配列の3番目の行 [3] に対しては、対応する結果は [2] となり、3 が2回目に遭遇したことを示します。

クエリ:

結果:

clear_depth=2 に変更すると、各行の要素が個別に列挙される結果になります。

クエリ:

結果:

arrayPopBack

配列の最後のアイテムを削除します。

引数

  • array – 配列。

arrayPopFront

配列の最初のアイテムを削除します。

引数

  • array – 配列。

arrayPushBack

配列の末尾に1つのアイテムを追加します。

引数

  • array – 配列。
  • single_value – 単一の値。数値の配列には数値しか追加できず、文字列の配列には文字列しか追加できません。数値を追加する際、ClickHouse は自動的に single_value の型を配列のデータ型に設定します。ClickHouse のデータ型に関する詳細は、"データ型" を参照してください。NULL を指定することもできます。関数は配列に NULL 要素を追加し、配列要素の型は Nullable に変換されます。

arrayPushFront

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

引数

  • array – 配列。
  • single_value – 単一の値。数値の配列には数値しか追加できず、文字列の配列には文字列しか追加できません。数値を追加する際、ClickHouse は自動的に single_value の型を配列のデータ型に設定します。ClickHouse のデータ型に関する詳細は、"データ型" を参照してください。NULL を指定することもできます。関数は配列に NULL 要素を追加し、配列要素の型は Nullable に変換されます。

arrayResize

配列の長さを変更します。

引数:

  • array — 配列。
  • size — 必要な配列の長さ。
    • size が元の配列のサイズより小さい場合、配列は右から切り捨てられます。
  • size が元の配列の初期サイズより大きい場合、配列は右に extender 値または配列アイテムのデータ型のデフォルト値で拡張されます。
  • extender — 配列を拡張するための値。NULL も指定できます。

返される値:

長さ size の配列。

呼び出しの例

arraySlice

配列のスライスを返します。

引数

  • array – データの配列。
  • offset – 配列の端からのインデント。正の値は左からのオフセットを、負の値は右からのインデントを示します。配列要素の番号は1から始まります。
  • length – 必要なスライスの長さ。負の値を指定した場合、関数は開いたスライス [offset, array_length - length] を返します。値を省略した場合、関数はスライス [offset, the_end_of_array] を返します。

配列の要素が NULL に設定されている場合、それらは通常の値として扱われます。

arrayShingles

指定された長さの入力配列の「シングル」を生成する配列を生成します。

構文

引数

  • array — 入力配列 配列
  • length — 各シングルの長さ。

返される値

  • 生成されたシングルの配列。配列

クエリ:

結果:

文字列値のソートの例:

次の NULLNaN および Inf 値のソート順を考慮してください:

  • -Inf 値が配列の最初に来ます。
  • NULL 値が配列の最後に来ます。
  • NaN 値が NULL の直前に来ます。
  • Inf 値が NaN の直前に来ます。

arraySort高階関数 であることに注意してください。最初の引数としてラムダ関数を渡すことができます。この場合、ソートの順序は配列の要素に適用されたラムダ関数の結果によって決まります。

次の例を考えましょう:

ソース配列の各要素に対して、ラムダ関数はソートキーを返します。すなわち、[1 –> -1, 2 –> -2, 3 –> -3] です。arraySort 関数がキーを昇順にソートするため、結果は [3, 2, 1] になります。このように、(x) –> -x ラムダ関数はソートにおける 降順 を設定します。

ラムダ関数は複数の引数を受け取ることができます。この場合、arraySort 関数にはラムダ関数の引数に対応する同じ長さの配列を複数渡す必要があります。結果の配列は最初の入力配列の要素で構成され、次の入力配列からの要素がソートキーを指定します。例えば:

ここでは、第二の配列([2, 1])で渡された要素がソース配列(['hello', 'world'])の対応する要素に対するソートキーを定義します。すなわち、['hello' –> 2, 'world' –> 1] です。ラムダ関数が x を使用しないため、ソース配列の実際の値は結果の順序に影響を与えません。したがって、'hello' は結果の二番目の要素になり、'world' は最初の要素になります。

以下に他の例を示します。

注記

ソート効率を改善するために、シュワルツ変換 が使用されます。

arrayPartialSort([func,] limit, arr, ...)

arraySort と同様ですが、limit 引数に追加すれば部分ソートが可能です。昇順にソートされた [1..limit] 範囲の要素を含む、元の配列と同じサイズの配列を返します。残りの要素 (limit..N] は未指定の順序で保持されます。

arrayReverseSort

arr 配列の要素を降順にソートします。func 関数が指定されている場合、arr は配列の要素に適用された func 関数の結果に従ってソートされ、その後ソートされた配列が逆転されます。func が複数の引数を受け取る場合、arrayReverseSort 関数には func の引数に対応する複数の配列が渡されます。詳細な例は arrayReverseSort の説明の最後に示されています。

構文

整数値のソートの例:

文字列値のソートの例:

次の NULLNaN および Inf 値のソート順を考慮してください:

  • Inf 値が配列の最初に来ます。
  • NULL 値が配列の最後に来ます。
  • NaN 値が NULL の直前に来ます。
  • -Inf 値が NaN の直前に来ます。

arrayReverseSort高階関数 であることに注意してください。最初の引数としてラムダ関数を渡すことができます。以下の例が示されています。

配列は次のようにソートされます:

  1. 最初にソース配列([1, 2, 3])が、配列の要素に適用されたラムダ関数の結果に従ってソートされます。結果は配列 [3, 2, 1] です。
  2. 前のステップで得られた配列が逆転されます。したがって、最終結果は [1, 2, 3] です。

ラムダ関数は複数の引数を受け取ることができます。この場合、arrayReverseSort 関数にはラムダ関数の引数に対応する同じ長さの配列を複数渡す必要があります。結果の配列は最初の入力配列の要素で構成され、次の入力配列からの要素がソートキーを指定します。例えば:

この例では、配列は次のようにソートされます:

  1. 最初にソース配列(['hello', 'world'])が、配列の要素に適用されたラムダ関数の結果に従ってソートされます。第二の配列([2, 1])で渡された要素が、ソース配列の対応する要素のソートキーを定義します。結果は配列 ['world', 'hello'] です。
  2. 前のステップでソートされた配列が逆転されます。したがって、最終結果は ['hello', 'world'] です。

以下に他の例を示します。

arrayPartialReverseSort([func,] limit, arr, ...)

arrayReverseSort と同様ですが、limit 引数に追加すれば部分ソートが可能です。降順にソートされた [1..limit] 範囲の要素を含む、元の配列と同じサイズの配列を返します。残りの要素 (limit..N] は未指定の順序で保持されます。

arrayShuffle

元の配列と同じサイズの配列を返し、要素をシャッフルした順序で格納します。 要素は、各要素のすべての可能な順列が同等の出現確率を持つように並べ替えられます。

構文

パラメータ

  • arr: 一部シャッフルする配列。 Array.
  • seed(オプション): ランダム数生成に使用されるシード。提供されていない場合は、ランダムなものが使用されます。 UInt または Int.

返される値

  • シャッフルされた要素を含む配列。

実装の詳細

注記

この関数は定数を物質化しません。

この例では、arrayShuffle がシードを提供せずに使用されます。したがって、関数はランダムに1つを生成します。

クエリ:

注意: ClickHouse Fiddle を使用していると、関数のランダムな性質により正確な応答が異なる場合があります。

結果:

この例では、arrayShuffle にシードが提供され、安定した結果が得られます。

クエリ:

結果:

arrayPartialShuffle

入力配列の基数 N が与えられると、サイズNの配列を返します。ここで、[1...limit] の範囲の要素はシャッフルされ、範囲 (limit...n] の残りの要素は未シャッフルのままとなります。

構文

パラメータ

  • arr: 一部シャッフルする配列サイズ N. Array.
  • limit(オプション): 要素交換の制限数、範囲 [1..N]UInt または Int.
  • seed(オプション): ランダム数生成に使用するシード値。提供されていない場合は、ランダムなものが使用されます。 UInt または Int

返される値

  • シャッフルされた要素を持つ配列。

実装の詳細

注記

この関数は定数を物質化しません。

limit の値は範囲 [1..N] に収められるべきです。その範囲外の値は完全な arrayShuffle を実行するのと等価です。

注意: ClickHouse Fiddle を使用していると、関数のランダムな性質により正確な応答が異なる場合があります。

クエリ:

結果:

要素の順序は保持されます([2,3,4,5], [7,8,9,10])が、シャッフルされた要素 [1, 6] だけが変更されます。シードは提供されていないため、関数はランダムに選択します。

この例では、limit2 に増加し、シード値が提供されます。順序

クエリ:

要素の順序は保持されます([4, 5, 6, 7, 8], [10])が、シャッフルされた要素 [1, 2, 3, 9] だけが変更されます。

結果:

arrayUniq(arr, ...)

1つの引数が渡された場合、配列内の異なる要素の数をカウントします。 複数の引数が渡された場合、対応する位置にある複数の配列で異なるタプルの数をカウントします。

配列内のユニークなアイテムのリストを取得したい場合は、arrayReduce('groupUniqArray', arr) を使用できます。

arrayJoin(arr)

特別な関数です。「ArrayJoin function」のセクションを参照してください。

arrayDifference

隣接する配列要素間の差の配列を計算します。結果配列の最初の要素は 0 で、2 番目は a[1] - a[0]、3 番目は a[2] - a[1] と続きます。結果配列の要素の型は、減算に対する型推論ルールによって決まります(例: UInt8 - UInt8 = Int16)。

構文

引数

返される値

隣接する配列要素間の差の配列を返します。 UInt*, Int*, Float*.

クエリ:

結果:

Int64 の結果型によるオーバーフローの例:

クエリ:

結果:

arrayDistinct

配列を受け取り、ユニークな要素のみを含む配列を返します。

構文

引数

返される値

ユニークな要素を含む配列を返します。

クエリ:

結果:

arrayEnumerateDense

元の配列と同じサイズの配列を返し、各要素が元の配列で最初に出現する位置を示します。

構文

クエリ:

結果:

arrayEnumerateDenseRanked

元の配列と同じサイズの配列を返し、各要素が元の配列で最初に出現する位置を示します。多次元配列を列挙することができ、配列の内部をどの程度深く見るかを指定できます。

構文

引数

  • clear_depth: 指定されたレベルで要素を別々に列挙します。正の Integermax_arr_depth 以下。
  • arr: 列挙する N 次元配列。 Array.
  • max_array_depth: 最大有効深度。正の Integerarr の深度以下。

clear_depth=1 および max_array_depth=1 では、結果は arrayEnumerateDense が返すものと同じになります。

クエリ:

結果:

この例では、arrayEnumerateDenseRanked が使用され、各要素の最初の位置を示す配列が得られます。渡された配列の最初の行に対する対応する結果の最初の行は [1,1,2,3] であり、10 が位置1および2で最初に出現する数値であることを示しています。行の2番目の配列 [40, 50, 10, 30] に対する結果の行の対応は [4,5,1,2] であり、4050 がその行の位置1および2でそれぞれ4番目および5番目に出現し、別の 10(最初の出現番号)は位置3にあり、30(2番目の出現番号)が最後の位置にあることを示しています。

クエリ:

結果:

clear_depth=2 に変更すると、列挙は各行ごとに新たに発生します。

クエリ:

結果:

arrayUnion

複数の配列を取り、それらのいずれかのソース配列に存在するすべての要素を含む配列を返します。 結果にはユニークな値のみが含まれます。

構文

引数

関数は異なる型の配列を任意の数取ることができます。

返される値

  • ソース配列のユニークな要素を含む Array.

クエリ:

結果:

arrayIntersect

複数の配列を取り、すべてのソース配列に存在する要素を含む配列を返します。 結果にはユニークな値のみが含まれます。

構文

引数

関数は異なる型の配列を任意の数取ることができます。

返される値

  • すべてのソース配列に存在するユニークな要素を含む Array.

クエリ:

結果:

arraySymmetricDifference

複数の配列を取り、すべてのソース配列に存在しない要素を含む配列を返します。 結果にはユニークな値のみが含まれます。

注記

2つ以上の集合の対称差は、 数学的に定義されたものであり、すべての入力要素が奇数回入力集合に出現する集合です。 対照的に、arraySymmetricDifference 関数は単にすべての入力集合の中に存在しない入力要素の集合を返します。

構文

引数

関数は異なる型の配列を任意の数取ることができます。

返される値

  • すべてのソース配列に存在しないユニークな要素を含む Array.

クエリ:

結果:

arrayJaccardIndex

二つの配列の ジャッカード指数 を返します。

クエリ:

結果:

arrayReduce

配列要素に集約関数を適用し、その結果を返します。集約関数の名前はシングルクォートの中に文字列として渡されます 'max', 'sum' など。パラメトリック集約関数を使用する際は、関数名の後にパラメータをかっこで示します 'uniqUpTo(6)'

構文

引数

  • agg_func — 集約関数の名前は定数の string.
  • arr — 集約関数のパラメータとしての任意の数の array 型のカラム。

返される値

クエリ:

結果:

集約関数が複数の引数を取る場合、この関数は同じサイズの複数の配列に適用される必要があります。

クエリ:

結果:

パラメトリック集約関数の例:

クエリ:

結果:

関連情報

arrayReduceInRanges

与えられた範囲内で配列要素に集約関数を適用し、各範囲に対する結果を含む配列を返します。この関数は、複数の arrayReduce(agg_func, arraySlice(arr1, index, length), ...) と同じ結果を返します。

構文

引数

  • agg_func — 集約関数の名前は定数の string.
  • ranges — 集約する範囲である arraytuples であり、各範囲のインデックスおよび長さを含む必要があります。
  • arr — 任意の数の Array 型カラム、集約関数のパラメータとして。

返される値

  • 指定された範囲に対する集約関数の結果を含む配列。 Array.

クエリ:

結果:

arrayFold

1つ以上の等サイズの配列にラムダ関数を適用し、その結果を累積します。

構文

クエリ:

結果:

フィボナッチ数列の例

関連情報

arrayReverse

元の配列と同じサイズの配列を返し、要素を逆順に含みます。

構文

例:

reverse(arr)

arrayReverse」の同義語です。

arrayFlatten

配列の配列をフラットな配列に変換します。

機能:

  • ネストされた配列の任意の深さに適用できます。
  • すでにフラットな配列は変更されません。

フラットになった配列は、すべてのソース配列からのすべての要素を含みます。

構文

別名: flatten

パラメータ

  • array_of_arraysArray の配列。例えば、[[1,2,3], [4,5]]

arrayCompact

配列から連続する重複要素を削除します。結果値の順序はソース配列内の順序に従います。

構文

引数

arr — 検査する array.

返される値

重複のない配列。 Array.

クエリ:

結果:

arrayZip

複数の配列を1つの配列に結合します。結果の配列は、ソース配列の対応する要素をタプルにグループ化して、引数のリスト順で構成されます。

構文

引数

関数は異なる型の配列を任意の数取ることができます。すべての入力配列は同じサイズでなければなりません。

返される値

  • ソース配列からの要素が tuples にグループ化された配列。タプル内のデータ型は、入力配列の型と同じであり、配列が渡されるときの順序と同じです。 Array.

クエリ:

結果:

arrayZipUnaligned

複数の配列を1つの配列に結合し、アライメントのない配列を許可します。結果の配列は、ソース配列の対応する要素をタプルにグループ化して、引数のリスト順で構成されます。

構文

引数

関数は異なる型の配列を任意の数取ることができます。

返される値

  • ソース配列からの要素が tuples にグループ化された配列。タプル内のデータ型は、入力配列の型と同じであり、配列が渡されるときの順序と同じです。 Array。配列のサイズが異なる場合、短い配列は null 値でパディングされます。

クエリ:

結果:

arrayROCAUC

受信者動作特性(ROC)曲線の下の面積を計算します。 ROC 曲線は、すべての閾値に対する真陽性率(TPR)を y 軸、偽陽性率(FPR)を x 軸にプロットして作成されます。 結果の値は 0 から 1 までの範囲で、値が高いほどモデルのパフォーマンスが良いことを示します。 ROC AUC(単に AUC とも呼ばれます)は、機械学習の概念です。 詳細については、こちらこちら、およびこちらを参照してください。

構文

別名: arrayAUC

引数

  • arr_scores — モデルが与えるスコア。 Array整数 または 浮動小数点数.
  • arr_labels — サンプルのラベル、通常は正のサンプルには 1、負のサンプルには 0 を指定します。 Array整数 または 列挙型.
  • scale — 正規化された面積を返すかどうかを決定します。 false の場合、TP(真陽性)x FP(偽陽性)曲線の下の面積を返します。デフォルト値: true。 Bool. オプション。
  • arr_partial_offsets — ROC 曲線の一部の領域(ROC空間の垂直バンドに相当)を計算するための 4 つの非負整数の配列。これは ROC AUC の分散計算に役立ちます。配列は以下の要素 [higher_partitions_tp, higher_partitions_fp, total_positives, total_negatives] を含む必要があります。 Array の非負 整数. オプション。
    • higher_partitions_tp: スコアの高いパーティションにおける正のラベルの数。
    • higher_partitions_fp: スコアの高いパーティションにおける負のラベルの数。
    • total_positives: データセット全体の正のサンプルの総数。
    • total_negatives: データセット全体の負のサンプルの総数。
注記

arr_partial_offsets が使用される場合、arr_scoresarr_labels は全データセットの一部にすべきで、スコアの範囲が含まれます。 データセットは連続したパーティションに分割され、各パーティションには特定の範囲内にスコアが含まれるデータのサブセットが含まれるべきです。 たとえば:

  • 1つのパーティションは範囲 [0, 0.5) 内のすべてのスコアを含むことができます。
  • 別のパーティションは範囲 [0.5, 1.0] のスコアを含むことができます。

返される値

受信者動作特性(ROC)曲線の下の面積を返します。 Float64.

クエリ:

結果:

arrayAUCPR

精度-再現率 (PR) 曲線の下の面積を計算します。 精度-再現率曲線は、すべての閾値に対して y 軸に精度をプロットし、x 軸に再現率をプロットすることで作成されます。 結果の値は 0 から 1 の範囲であり、高い値はより良いモデルのパフォーマンスを示します。 PR AUC は特に不均衡データセットに有用で、ROC AUC に比べてそれらのケースでのパフォーマンスの明確な比較を提供します。 詳細については、こちらこちら、および こちらを参照してください。

構文

エイリアス: arrayPRAUC

引数

  • arr_scores — モデルが与えるスコア。 配列整数または浮動小数点の配列。
  • arr_labels — サンプルのラベル、通常は正のサンプルに対して 1、負のサンプルに対して 0。 配列整数または列挙型の配列。
  • arr_partial_offsets — オプション。 PR 曲線の部分的面積を計算するための非負の整数 3 つの 配列。これは全体の AUC の代わりに PR 空間の垂直帯域に相当します。このオプションは、PR AUC の分散計算に役立ちます。配列には以下の要素 [higher_partitions_tp, higher_partitions_fp, total_positives] が含まれている必要があります。 配列の非負の整数。オプション。
    • higher_partitions_tp: 高スコアのパーティションにおける正のラベルの数。
    • higher_partitions_fp: 高スコアのパーティションにおける負のラベルの数。
    • total_positives: 全データセットにおける正のサンプルの合計数。
注記

arr_partial_offsets が使用される場合、arr_scoresarr_labels は、全データセットの一部であり、スコアの間隔を含む必要があります。 データセットは隣接するパーティションに分割されるべきで、各パーティションには特定の範囲内のスコアに該当するデータのサブセットが含まれます。 例えば:

  • 一つのパーティションは [0, 0.5) の範囲内のすべてのスコアを含むことができます。
  • 別のパーティションは [0.5, 1.0] の範囲内のスコアを含むことができます。

返される値

精度-再現率 (PR) 曲線の下の面積を返します。 Float64

クエリ:

結果:

arrayMap(func, arr1, ...)

元の配列から、各要素に対して func(arr1[i], ..., arrN[i]) を適用することで得られた配列を返します。 配列 arr1 ... arrN は同じ数の要素を持つ必要があります。

例:

以下の例は、異なる配列から要素のタプルを作成する方法を示しています:

arrayMap高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayFilter(func, arr1, ...)

arr1 の中で、func(arr1[i], ..., arrN[i]) が 0 以外の値を返す要素のみを含む配列を返します。

例:

arrayFilter高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayFill(func, arr1, ...)

最初の要素から最後の要素まで arr1 をスキャンし、func(arr1[i], ..., arrN[i]) が 0 を返す場合は arr1[i]arr1[i - 1] に置き換えます。 arr1 の最初の要素は置き換えられません。

例:

arrayFill高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayReverseFill(func, arr1, ...)

配列 arr1 を最後の要素から最初の要素までスキャンし、func(arr1[i], ..., arrN[i]) が 0 を返す場合は arr1[i]arr1[i + 1] に置き換えます。 arr1 の最後の要素は置き換えられません。

例:

arrayReverseFill高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arraySplit(func, arr1, ...)

arr1 を複数の配列に分割します。 func(arr1[i], ..., arrN[i]) が 0 以外の値を返すとき、配列は要素の左側で分割されます。 配列は最初の要素の前で分割されることはありません。

例:

arraySplit高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayReverseSplit(func, arr1, ...)

arr1 を複数の配列に分割します。 func(arr1[i], ..., arrN[i]) が 0 以外の値を返すとき、配列は要素の右側で分割されます。 配列は最後の要素の後で分割されることはありません。

例:

arrayReverseSplit高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayExists([func,] arr1, ...)

arr の中に、 func(arr1[i], ..., arrN[i]) が 0 以外の値を返す要素が少なくとも1つある場合は 1 を返します。そうでない場合は 0 を返します。

arrayExists高階関数です。最初の引数としてラムダ関数を渡す必要があります。

arrayAll([func,] arr1, ...)

func(arr1[i], ..., arrN[i]) が配列内のすべての要素に対して 0 以外の値を返す場合は 1 を返します。そうでない場合は 0 を返します。

arrayAll高階関数です。最初の引数としてラムダ関数を渡す必要があります。

arrayFirst(func, arr1, ...)

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最初の要素を返します。

arrayFirstOrNull

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最初の要素を返します。そうでない場合は NULL を返します。

構文

パラメータ

返される値

  • 渡された配列内の最初の要素。
  • そうでない場合は、NULL を返します。

実装の詳細

arrayFirstOrNull高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayLast(func, arr1, ...)

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最後の要素を返します。

arrayLast高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayLastOrNull

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最後の要素を返します。そうでない場合は、NULL を返します。

構文

パラメータ

返される値

  • 渡された配列内の最後の要素。
  • そうでない場合は、NULL を返します。

実装の詳細

arrayLastOrNull高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

クエリ:

結果:

クエリ:

結果:

arrayFirstIndex(func, arr1, ...)

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最初の要素のインデックスを返します。

arrayFirstIndex高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayLastIndex(func, arr1, ...)

func(arr1[i], ..., arrN[i]) が 0 以外の値を返す配列 arr1 内の最後の要素のインデックスを返します。

arrayLastIndex高階関数です。最初の引数としてラムダ関数を渡す必要があり、これは省略できません。

arrayMin

ソース配列の要素の最小値を返します。

func 関数が指定されている場合、これはこの関数によって変換された要素の最小値を返します。

arrayMin高階関数です。最初の引数としてラムダ関数を渡すことができます。

構文

引数

  • func — 関数。
  • arr — 配列。配列

返される値

  • 関数の値の最小値(または配列の最小値)。
注記

func が指定されている場合、返り値の型は func の返り値の型に一致します。そうでない場合は配列の要素の型に一致します。

クエリ:

結果:

クエリ:

結果:

arrayMax

ソース配列の要素の最大値を返します。

func 関数が指定されている場合、これはこの関数によって変換された要素の最大値を返します。

arrayMax高階関数です。最初の引数としてラムダ関数を渡せます。

構文

引数

  • func — 関数。
  • arr — 配列。配列

返される値

  • 関数の値の最大値(または配列の最大値)。
注記

func が指定されている場合、返り値の型は func の返り値の型に一致します。そうでない場合は配列の要素の型に一致します。

クエリ:

結果:

クエリ:

結果:

arraySum

ソース配列の要素の合計を返します。

func 関数が指定されている場合、これはこの関数によって変換された要素の合計を返します。

arraySum高階関数です。最初の引数としてラムダ関数を渡すことができます。

構文

引数

  • func — 関数。
  • arr — 配列。配列

返される値

  • 関数の値の合計(または配列の合計)。
注記

返り値の型:

  • ソース配列の十進数(または func が指定されている場合は変換された値)に対して — Decimal128
  • 浮動小数点数の場合 — Float64
  • 符号なしの数値の場合 — UInt64
  • 符号付きの数値の場合 — Int64

クエリ:

結果:

クエリ:

結果:

arrayAvg

ソース配列の要素の平均を返します。

func 関数が指定されている場合、これはこの関数によって変換された要素の平均を返します。

arrayAvg高階関数です。最初の引数としてラムダ関数を渡すことができます。

構文

引数

  • func — 関数。
  • arr — 配列。配列

返される値

  • 関数の値の平均(または配列の平均)。 Float64

クエリ:

結果:

クエリ:

結果:

arrayCumSum([func,] arr1, ...)

ソース配列 arr1 の要素の部分的(累積)合計の配列を返します。 func が指定されている場合、arr1arr2、...、arrNfunc を適用して合計が計算されます。つまり、func(arr1[i], ..., arrN[i]) です。

構文

引数

  • arr — 数値値の配列

返される値

  • ソース配列の要素の部分合計の配列を返します。 UInt*Int*Float*

例:

arrayCumSum高階関数です。最初の引数としてラムダ関数を渡すことができます。

arrayCumSumNonNegative([func,] arr1, ...)

arrayCumSum と同様で、ソース配列の部分的(累積)合計の配列を返します。 func が指定されている場合、arr1arr2、...、arrNfunc を適用して合計が計算されます。つまり、func(arr1[i], ..., arrN[i]) です。 arrayCumSum とは異なり、現在の累積和が 0 未満の場合は 0 に置き換えられます。

構文

引数

  • arr — 数値値の配列

返される値

  • ソース配列の非負の部分合計の配列を返します。 UInt*Int*Float*

arraySumNonNegative高階関数です。最初の引数としてラムダ関数を渡すことができます。

arrayProduct

配列の要素を掛け算します。

構文

引数

  • arr — 数値値の配列

返される値

  • 配列の要素の積。 Float64

クエリ:

結果:

クエリ:

戻り値の型は常に Float64 です。結果:

arrayRotateLeft

指定された数の要素だけ配列を左に回転させます。 要素の数が負の場合、配列は右に回転します。

構文

引数

  • arr配列
  • n — 回転する要素の数。

返される値

  • 指定された数の要素だけ左に回転した配列。配列

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayRotateRight

指定された数の要素だけ配列を右に回転させます。 要素の数が負の場合、配列は左に回転します。

構文

引数

  • arr配列
  • n — 回転する要素の数。

返される値

  • 指定された数の要素だけ右に回転した配列。配列

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayShiftLeft

指定された数の要素だけ配列を左にシフトさせます。 新しい要素は、提供された引数または配列要素型のデフォルト値で埋められます。 要素の数が負の場合、配列は右にシフトします。

構文

引数

  • arr配列
  • n — シフトする要素の数。
  • default — オプション。新しい要素のデフォルト値。

返される値

  • 指定された数の要素だけ左にシフトした配列。配列

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayShiftRight

指定された数の要素だけ配列を右にシフトさせます。 新しい要素は、提供された引数または配列要素型のデフォルト値で埋められます。 要素の数が負の場合、配列は左にシフトします。

構文

引数

  • arr配列
  • n — シフトする要素の数。
  • default — オプション。新しい要素のデフォルト値。

返される値

  • 指定された数の要素だけ右にシフトした配列。配列

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayRandomSample

arrayRandomSample 関数は、入力配列から samples 個のランダムな要素を含むサブセットを返します。 samples が入力配列のサイズを超える場合、サンプルサイズは配列のサイズに制限されます。つまり、すべての配列要素が返されますが、その順序は保証されません。この関数はフラット配列と入れ子配列の両方を処理できます。

構文

引数

  • arr — 要素をサンプリングするための入力配列。(配列(T))
  • samples — ランダムサンプルに含める要素の数 (UInt*)

返される値

  • 入力配列からのランダムサンプルを含む配列。配列

クエリ:

結果:

クエリ:

結果:

クエリ:

結果:

arrayNormalizedGini

正規化ジニ係数を計算します。

構文

引数

返される値

  • 予測された値のジニ係数、正規化された値のジニ係数、正規化ジニ係数(前者の 2 つのジニ係数の比)を含むタプル。

クエリ:

結果:

Distance functions

サポートされているすべての関数については、距離関数のドキュメントを参照してください。