ClickHouse/docs/ja/sql-reference/functions/array-functions.md
Ivan Blinkov 9a26d48ad0
Basic blog similar to docs (#11609)
* Basic blog similar to docs

* rename post

* no post content in post_meta

* update readme and template

* more "en" content

* complete "en" content

* build blog redirects

* redirects for migration

* link sitemaps

* update po

* add "ru" content

* ru redirects

* remove old domain mentions

* adjust styles

* content improvements

* +1 alt

* use main images from CDN

* use re-hosted in-content images

* extra vertical margin around embedded youtube

* minor improvements

* adjust post page

* adjust html meta

* adjust post page

* improve blog rendering
2020-06-16 09:31:00 +03:00

33 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 46 配列の操作

配列を操作するための関数

空の配列の場合は1、空でない配列の場合は0を返します。 結果の型はUInt8です。 この関数は文字列に対しても機能します。

ノーテンプティ

空の配列の場合は0、空でない配列の場合は1を返します。 結果の型はUInt8です。 この関数は文字列に対しても機能します。

長さ

配列内の項目の数を返します。 結果の型はUInt64です。 この関数は文字列に対しても機能します。

emptyArrayUInt8,emptyArrayUInt16,emptyArrayUInt32,emptyArrayUInt64

emptyArrayInt8,emptyArrayInt16,emptyArrayInt32,emptyArrayInt64

emptyArrayFloat32,emptyArrayFloat64

emptyArrayDate,emptyArrayDateTime

emptyArrayString

ゼロの引数を受け取り、適切な型の空の配列を返します。

エンプティアライトシングル

空の配列を受け取り、既定値と等しい一要素配列を返します。

範囲(終了)、範囲(開始、終了[、ステップ])

開始から終了-1までの数値の配列をステップごとに返します。 引数が start 既定値は0です。 引数が step 既定値は1です。 それはpythonicのように動作します range. しかし、違いは、すべての引数の型は UInt 数字だ 場合によっては、合計長が100,000,000を超える要素の配列がデータブロックに作成されると、例外がスローされます。

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

関数の引数から配列を作成します。 引数は定数であり、最小の共通型を持つ型を持つ必要があります。 それ以外の場合は、作成する配列の型が明確ではないためです。 つまり、この関数を使用して空の配列を作成することはできません(それを行うには、 emptyArray* 以上の機能)。 を返す Array(T) "result"と入力します。 T 渡された引数のうち最小の共通型です。

arrayConcat

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

arrayConcat(arrays)

パラメータ

  • arrays Arbitrary number of arguments of 配列 タイプ。
SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res
┌─res───────────┐
│ [1,2,3,4,5,6] │
└───────────────┘

arrayElement(arr,n),演算子arr[n]

インデックスを持つ要素を取得します n 配列から arr. n 任意の整数型である必要があります。 配列のインデックスは、配列から始まります。 負の索引がサポートされます。 この場合、末尾から番号付きの対応する要素を選択する。 例えば, arr[-1] 配列内の最後の項目です。

インデックスが配列の境界の外にある場合、デフォルト値数値の場合は0、文字列の場合は空の文字列などを返します。非定数配列と定数インデックス0の場合を除きますこの場合はエラーが発生します Array indices are 1-based).

has(arr,elem)

チェックかどうか arr 配列は elem 要素。 要素が配列内にない場合は0を返し、要素が配列内にない場合は1を返します。

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

SELECT has([1, 2, NULL], NULL)
┌─has([1, 2, NULL], NULL)─┐
│                       1 │
└─────────────────────────┘

hasAll

ある配列が別の配列のサブセットかどうかを確認します。

hasAll(set, subset)

パラメータ

  • set Array of any type with a set of elements.
  • subset Array of any type with elements that should be tested to be a subset of set.

戻り値

  • 1,if set すべての要素が含まれています subset.
  • 0 そうでなければ

独特の特性

  • 空の配列は、任意の配列のサブセットです。
  • 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']) 0を返します。

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

ハサニー

るかどうかを判二つの配列が互いの交差点にある。

hasAny(array1, array2)

パラメータ

  • array1 Array of any type with a set of elements.
  • array2 Array of any type with a set of elements.

戻り値

  • 1,if array1array2 少なくとも一つの同様の要素があります。
  • 0 そうでなければ

独特の特性

  • 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']) ツづゥツ。 0.

SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) ツづゥツ。 1.

インデックス(arr,x)

最初のインデックスを返します x 配列内にある場合は要素1から始まる、そうでない場合は0。

例:

SELECT indexOf([1, 3, NULL, NULL], NULL)
┌─indexOf([1, 3, NULL, NULL], NULL)─┐
│                                 3 │
└───────────────────────────────────┘

に設定された要素 NULL 通常の値として処理されます。

カウントイカル(arr,x)

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

NULL 要素は個別の値として処理されます。

例:

SELECT countEqual([1, 2, NULL, NULL], NULL)
┌─countEqual([1, 2, NULL, NULL], NULL)─┐
│                                    2 │
└──────────────────────────────────────┘

アレイン(arr)

Returns the array [1, 2, 3, …, length (arr) ]

この関数は通常、配列結合で使用されます。 配列結合を適用した後、配列ごとに一度だけ何かを数えることができます。 例:

SELECT
    count() AS Reaches,
    countIf(num = 1) AS Hits
FROM test.hits
ARRAY JOIN
    GoalsReached,
    arrayEnumerate(GoalsReached) AS num
WHERE CounterID = 160656
LIMIT 10
┌─Reaches─┬──Hits─┐
│   95606 │ 31406 │
└─────────┴───────┘

この例では、Reachはコンバージョン数(配列結合を適用した後に受信した文字列)、Hitsはページビュー数(配列結合の前の文字列)です。 この特定のケースでは、同じ結果を簡単に得ることができます:

SELECT
    sum(length(GoalsReached)) AS Reaches,
    count() AS Hits
FROM test.hits
WHERE (CounterID = 160656) AND notEmpty(GoalsReached)
┌─Reaches─┬──Hits─┐
│   95606 │ 31406 │
└─────────┴───────┘

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

arrayEnumerateUniq(arr, …)

ソース配列と同じサイズの配列を返します。 たとえば、arrayEnumerateUniq([10, 20, 10, 30]) = [1, 1, 2, 1].

この関数は、配列結合と配列要素の集計を使用する場合に便利です。 例:

SELECT
    Goals.ID AS GoalID,
    sum(Sign) AS Reaches,
    sumIf(Sign, num = 1) AS Visits
FROM test.visits
ARRAY JOIN
    Goals,
    arrayEnumerateUniq(Goals.ID) AS num
WHERE CounterID = 160656
GROUP BY GoalID
ORDER BY Reaches DESC
LIMIT 10
┌──GoalID─┬─Reaches─┬─Visits─┐
│   53225 │    3214 │   1097 │
│ 2825062 │    3188 │   1097 │
│   56600 │    2803 │    488 │
│ 1989037 │    2401 │    365 │
│ 2830064 │    2396 │    910 │
│ 1113562 │    2372 │    373 │
│ 3270895 │    2262 │    812 │
│ 1084657 │    2262 │    345 │
│   56599 │    2260 │    799 │
│ 3271094 │    2256 │    812 │
└─────────┴─────────┴────────┘

この例では、各ゴールIDには、コンバージョン数(ゴールの入れ子になったデータ構造の各要素は、到達したゴールであり、これをコンバージョンと呼びます)とセッシ 配列結合がなければ、セッション数をsum(Sign)として数えました。 しかし、この特定のケースでは、行にネストされたGoals構造体が乗算されているため、この後に各セッションを一度カウントするために、arrayEnumerateUniq(Goals.ID機能。

ArrayEnumerateUniq関数は、引数と同じサイズの複数の配列を取ることができます。 この場合、すべての配列の同じ位置にある要素のタプルに対して一意性が考慮されます。

SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]) AS res
┌─res───────────┐
│ [1,2,1,1,2,1] │
└───────────────┘

これは、入れ子になったデータ構造で配列結合を使用し、この構造体内の複数の要素間でさらに集計する場合に必要です。

arrayPopBack

配列から最後の項目を削除します。

arrayPopBack(array)

パラメータ

  • array Array.

SELECT arrayPopBack([1, 2, 3]) AS res
┌─res───┐
│ [1,2] │
└───────┘

arrayPopFront

配列から最初の項目を削除します。

arrayPopFront(array)

パラメータ

  • array Array.

SELECT arrayPopFront([1, 2, 3]) AS res
┌─res───┐
│ [2,3] │
└───────┘

arrayPushBack

配列の最後に項目を追加します。

arrayPushBack(array, single_value)

パラメータ

  • array Array.
  • single_value A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the single_value 配列のデータ型の型。 ClickHouseのデータの種類の詳細については、次を参照してください “データ型”. ことができます NULL. この関数は NULL 要素を配列に変換し、配列要素の型を次のように変換します Nullable.

SELECT arrayPushBack(['a'], 'b') AS res
┌─res───────┐
│ ['a','b'] │
└───────────┘

アレイプッシュフロント

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

arrayPushFront(array, single_value)

パラメータ

  • array Array.
  • single_value A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the single_value 配列のデータ型の型。 ClickHouseのデータの種類の詳細については、次を参照してください “データ型”. ことができます NULL. この関数は NULL 要素を配列に変換し、配列要素の型を次のように変換します Nullable.

SELECT arrayPushFront(['b'], 'a') AS res
┌─res───────┐
│ ['a','b'] │
└───────────┘

arrayResize

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

arrayResize(array, size[, extender])

パラメータ:

  • array — Array.
  • size — Required length of the array.
    • もし size 配列の元のサイズよりも小さい場合、配列は右から切り捨てられます。
  • もし size 配列の初期サイズよりも大きい場合、配列は次のように右に拡張されます extender 配列項目のデータ型の値または既定値。
  • extender — Value for extending an array. Can be NULL.

戻り値:

長さの配列 size.

コールの例

SELECT arrayResize([1], 3)
┌─arrayResize([1], 3)─┐
│ [1,0,0]             │
└─────────────────────┘
SELECT arrayResize([1], 3, NULL)
┌─arrayResize([1], 3, NULL)─┐
│ [1,NULL,NULL]             │
└───────────────────────────┘

アレイスライス

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

arraySlice(array, offset[, length])

パラメータ

  • array Array of data.
  • offset Indent from the edge of the array. A positive value indicates an offset on the left, and a negative value is an indent on the right. Numbering of the array items begins with 1.
  • length -必要なスライスの長さ。 負の値を指定すると、関数は開いているスライスを返します [offset, array_length - length). 値を省略すると、関数はスライスを返します [offset, the_end_of_array].

SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res
┌─res────────┐
│ [2,NULL,4] │
└────────────┘

配列要素に設定 NULL 通常の値として処理されます。

arraySort([func,] arr, …)

の要素を並べ替えます arr 昇順の配列。 もし func 関数が指定されると、並べ替え順序は func 配列の要素に適用される関数。 もし func 複数の引数を受け入れる。 arraySort 関数には、引数の配列が複数渡されます。 func に対応する。 詳しい例はの終わりに示されています arraySort 説明。

整数値ソートの例:

SELECT arraySort([1, 3, 3, 0]);
┌─arraySort([1, 3, 3, 0])─┐
│ [0,1,3,3]               │
└─────────────────────────┘

文字列値のソートの例:

SELECT arraySort(['hello', 'world', '!']);
┌─arraySort(['hello', 'world', '!'])─┐
│ ['!','hello','world']              │
└────────────────────────────────────┘

次の並べ替え順序を考えてみましょう NULL, NaNInf 値:

SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]);
┌─arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf])─┐
│ [-inf,-4,1,2,3,inf,nan,nan,NULL,NULL]                     │
└───────────────────────────────────────────────────────────┘
  • -Inf 値は配列の最初にあります。
  • NULL 値は配列の最後にあります。
  • NaN 値は直前です NULL.
  • Inf 値は直前です NaN.

なお arraySort高次関数. Lambda関数を最初の引数として渡すことができます。 この場合、並べ替え順序は、配列の要素に適用されたlambda関数の結果によって決定されます。

次の例を考えてみましょう:

SELECT arraySort((x) -> -x, [1, 2, 3]) as res;
┌─res─────┐
│ [3,2,1] │
└─────────┘

For each element of the source array, the lambda function returns the sorting key, that is, [1 > -1, 2 > -2, 3 > -3]. Since the arraySort 関数は昇順にキーをソートし、結果は[3、2、1]です。 したがって、 (x) > -x ラムダ関数は 降順 ソートで。

Lambda関数は複数の引数を受け取ることができます。 この場合、 arraySort 関数lambda関数の引数が対応する同じ長さのいくつかの配列。 結果の配列は最初の入力配列の要素で構成され、次の入力配列の要素は並べ替えキーを指定します。 例えば:

SELECT arraySort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res────────────────┐
│ ['world', 'hello'] │
└────────────────────┘

ここでは、二番目の配列([2,1])に渡される要素は、ソース配列の対応する要素の並べ替えキーを定義します ([hello, world])、それは, [hello > 2, world > 1]. Since the lambda function doesn't use x、ソース配列の実際の値は結果の順序に影響しません。 だから, hello 結果の第二の要素になります。 world 最初になります。

その他の例を以下に示す。

SELECT arraySort((x, y) -> y, [0, 1, 2], ['c', 'b', 'a']) as res;
┌─res─────┐
│ [2,1,0] │
└─────────┘
SELECT arraySort((x, y) -> -y, [0, 1, 2], [1, 2, 3]) as res;
┌─res─────┐
│ [2,1,0] │
└─────────┘

!!! note "注" 効率を分類することを改善するため、 シュワルツ変換 が使用される。

arrayReverseSort([func,] arr, …)

の要素を並べ替えます arr 降順の配列。 もし func 関数を指定します, arr の結果に従ってソートされます。 func 関数は、配列の要素に適用され、その後、ソートされた配列が逆になります。 もし func 複数の引数を受け入れる。 arrayReverseSort 関数には、引数の配列が複数渡されます。 func に対応する。 詳しい例はの終わりに示されています arrayReverseSort 説明。

整数値ソートの例:

SELECT arrayReverseSort([1, 3, 3, 0]);
┌─arrayReverseSort([1, 3, 3, 0])─┐
│ [3,3,1,0]                      │
└────────────────────────────────┘

文字列値のソートの例:

SELECT arrayReverseSort(['hello', 'world', '!']);
┌─arrayReverseSort(['hello', 'world', '!'])─┐
│ ['world','hello','!']                     │
└───────────────────────────────────────────┘

次の並べ替え順序を考えてみましょう NULL, NaNInf 値:

SELECT arrayReverseSort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]) as res;
┌─res───────────────────────────────────┐
│ [inf,3,2,1,-4,-inf,nan,nan,NULL,NULL] │
└───────────────────────────────────────┘
  • Inf 値は配列の最初にあります。
  • NULL 値は配列の最後にあります。
  • NaN 値は直前です NULL.
  • -Inf 値は直前です NaN.

なお、 arrayReverseSort高次関数. Lambda関数を最初の引数として渡すことができます。 以下に例を示す。

SELECT arrayReverseSort((x) -> -x, [1, 2, 3]) as res;
┌─res─────┐
│ [1,2,3] │
└─────────┘

配列は次のように並べ替えられます:

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

Lambda関数は複数の引数を受け取ることができます。 この場合、 arrayReverseSort 関数lambda関数の引数が対応する同じ長さのいくつかの配列。 結果の配列は最初の入力配列の要素で構成され、次の入力配列の要素は並べ替えキーを指定します。 例えば:

SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘

この例では、配列は次のように並べ替えられます:

  1. 最初は、ソース配列 ([hello, world])は、配列の要素に適用されたlambda関数の結果に従ってソートされます。 二番目の配列([2,1])に渡される要素は、ソース配列の対応する要素の並べ替えキーを定義します。 結果は配列です [world, hello].
  2. 前のステップでソートされた配列は、逆になります。 だから、最終的な結果は [hello, world].

その他の例を以下に示す。

SELECT arrayReverseSort((x, y) -> y, [4, 3, 5], ['a', 'b', 'c']) AS res;
┌─res─────┐
│ [5,3,4] │
└─────────┘
SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res;
┌─res─────┐
│ [4,3,5] │
└─────────┘

arrayUniq(arr, …)

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

配列内の一意の項目のリストを取得する場合は、arrayReduceを使用できます(groupUniqArray,arr

アレイジョイン(arr)

特別な機能。 セクションを参照 “ArrayJoin function”.

arrayDifference

隣接する配列要素の差を計算します。 最初の要素が0になる配列を返します。 a[1] - a[0], etc. The type of elements in the resulting array is determined by the type inference rules for subtraction (e.g. UInt8 - UInt8 = Int16).

構文

arrayDifference(array)

パラメータ

戻り値

隣接する要素間の差分の配列を返します。

タイプ: UInt*, Int*, フロート*.

クエリ:

SELECT arrayDifference([1, 2, 3, 4])

結果:

┌─arrayDifference([1, 2, 3, 4])─┐
│ [0,1,1,1]                     │
└───────────────────────────────┘

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

クエリ:

SELECT arrayDifference([0, 10000000000000000000])

結果:

┌─arrayDifference([0, 10000000000000000000])─┐
│ [0,-8446744073709551616]                   │
└────────────────────────────────────────────┘

アレイディスト

配列を受け取り、別個の要素のみを含む配列を返します。

構文

arrayDistinct(array)

パラメータ

戻り値

個別の要素を含む配列を返します。

クエリ:

SELECT arrayDistinct([1, 2, 2, 3, 1])

結果:

┌─arrayDistinct([1, 2, 2, 3, 1])─┐
│ [1,2,3]                        │
└────────────────────────────────┘

アレイニュメラテンセ(arr)

ソース配列と同じサイズの配列を返します。

例:

SELECT arrayEnumerateDense([10, 20, 10, 30])
┌─arrayEnumerateDense([10, 20, 10, 30])─┐
│ [1,2,1,3]                             │
└───────────────────────────────────────┘

アレイインターセクト(arr)

複数の配列を取り、すべてのソース配列に存在する要素を含む配列を返します。 結果の配列内の要素の順序は、最初の配列と同じです。

例:

SELECT
    arrayIntersect([1, 2], [1, 3], [2, 3]) AS no_intersect,
    arrayIntersect([1, 2], [1, 3], [1, 4]) AS intersect
┌─no_intersect─┬─intersect─┐
│ []           │ [1]       │
└──────────────┴───────────┘

arrayReduce

集計関数を配列要素に適用し、その結果を返します。 集計関数の名前は、単一引quotesで文字列として渡されます 'max', 'sum'. パラメトリック集計関数を使用する場合、パラメーターは関数名の後に括弧で示されます 'uniqUpTo(6)'.

構文

arrayReduce(agg_func, arr1, arr2, ..., arrN)

パラメータ

  • agg_func — The name of an aggregate function which should be a constant 文字列.
  • arr — Any number of 配列 集計関数のパラメーターとして列を入力します。

戻り値

SELECT arrayReduce('max', [1, 2, 3])
┌─arrayReduce('max', [1, 2, 3])─┐
│                             3 │
└───────────────────────────────┘

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

SELECT arrayReduce('maxIf', [3, 5], [1, 0])
┌─arrayReduce('maxIf', [3, 5], [1, 0])─┐
│                                    3 │
└──────────────────────────────────────┘

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

SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
┌─arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])─┐
│                                                           4 │
└─────────────────────────────────────────────────────────────┘

arrayReduceInRanges

指定された範囲の配列要素に集計関数を適用し、各範囲に対応する結果を含む配列を返します。 関数はmultipleと同じ結果を返します arrayReduce(agg_func, arraySlice(arr1, index, length), ...).

構文

arrayReduceInRanges(agg_func, ranges, arr1, arr2, ..., arrN)

パラメータ

  • agg_func — The name of an aggregate function which should be a constant 文字列.
  • ranges — The ranges to aggretate which should be an 配列タプル これには、各範囲のインデックスと長さが含まれます。
  • arr — Any number of 配列 集計関数のパラメーターとして列を入力します。

戻り値

SELECT arrayReduceInRanges(
    'sum',
    [(1, 5), (2, 3), (3, 4), (4, 4)],
    [1000000, 200000, 30000, 4000, 500, 60, 7]
) AS res
┌─res─────────────────────────┐
│ [1234500,234000,34560,4567] │
└─────────────────────────────┘

アレイリバース(arr)

逆の順序で要素を含む元の配列と同じサイズの配列を返します。

例:

SELECT arrayReverse([1, 2, 3])
┌─arrayReverse([1, 2, 3])─┐
│ [3,2,1]                 │
└─────────────────────────┘

リバース(arr)

の同義語 “arrayReverse”

アレイフラッテン

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

関数:

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

の平坦化された配列を含むすべての要素をすべてソース配列.

構文

flatten(array_of_arrays)

別名: flatten.

パラメータ

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

SELECT flatten([[[1]], [[2], [3]]])
┌─flatten(array(array([1]), array([2], [3])))─┐
│ [1,2,3]                                     │
└─────────────────────────────────────────────┘

アレイコンパクト

配列から連続した重複要素を削除します。 結果の値の順序は、ソース配列の順序によって決まります。

構文

arrayCompact(arr)

パラメータ

arr — The 配列 検査する。

戻り値

重複のない配列。

タイプ: Array.

クエリ:

SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3])

結果:

┌─arrayCompact([1, 1, nan, nan, 2, 3, 3, 3])─┐
│ [1,nan,nan,2,3]                            │
└────────────────────────────────────────────┘

arrayZip

複数の配列を単一の配列に結合します。 結果の配列には、引数の順序で組にグループ化されたソース配列の対応する要素が含まれます。

構文

arrayZip(arr1, arr2, ..., arrN)

パラメータ

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

戻り値

  • ソース配列の要素をグループ化した配列 タプル. タプル内のデータ型は、入力配列の型と同じで、配列が渡される順序と同じです。

タイプ: 配列.

クエリ:

SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1])

結果:

┌─arrayZip(['a', 'b', 'c'], [5, 2, 1])─┐
│ [('a',5),('b',2),('c',1)]            │
└──────────────────────────────────────┘

アレイオーク

計算AUC機械学習の概念である曲線の下の面積、詳細を参照してくださいhttps://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve

構文

arrayAUC(arr_scores, arr_labels)

パラメータ

  • arr_scores — scores prediction model gives.
  • arr_labels — labels of samples, usually 1 for positive sample and 0 for negtive sample.

戻り値 FLOAT64型のAUC値を返します。

クエリ:

select arrayAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1])

結果:

┌─arrayAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1])─┐
│                                          0.75 │
└────────────────────────────────────────---──┘

元の記事