* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
33 KiB
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 ofset
.
戻り値
1
,ifset
すべての要素が含まれています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
,ifarray1
とarray2
少なくとも一つの同様の要素があります。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 thesingle_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 thesingle_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 beNULL
.
戻り値:
長さの配列 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
, NaN
と Inf
値:
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
, NaN
と Inf
値:
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,2,3])は、配列の要素に適用されたlambda関数の結果に従ってソートされます。 結果は配列[3,2,1]です。
- 前のステップで取得された配列は、逆になります。 したがって、最終的な結果は[1,2,3]です。
Lambda関数は複数の引数を受け取ることができます。 この場合、 arrayReverseSort
関数lambda関数の引数が対応する同じ長さのいくつかの配列。 結果の配列は最初の入力配列の要素で構成され、次の入力配列の要素は並べ替えキーを指定します。 例えば:
SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘
この例では、配列は次のように並べ替えられます:
- 最初は、ソース配列 ([‘hello’, ‘world’])は、配列の要素に適用されたlambda関数の結果に従ってソートされます。 二番目の配列([2,1])に渡される要素は、ソース配列の対応する要素の並べ替えキーを定義します。 結果は配列です [‘world’, ‘hello’].
- 前のステップでソートされた配列は、逆になります。 だから、最終的な結果は [‘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)
パラメータ
array
– 配列.
戻り値
隣接する要素間の差分の配列を返します。
例
クエリ:
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)
パラメータ
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)
パラメータ
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 │
└────────────────────────────────────────---──┘