10 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
57 | 高次 |
高次関数
->
演算子,lambda(params,expr)関数
Allows describing a lambda function for passing to a higher-order function. The left side of the arrow has a formal parameter, which is any ID, or multiple formal parameters – any IDs in a tuple. The right side of the arrow has an expression that can use these formal parameters, as well as any table columns.
例: x -> 2 * x, str -> str != Referer.
高階関数は、関数の引数としてラムダ関数のみを受け入れることができます。
複数の引数を受け入れるlambda関数は、高次関数に渡すことができます。 この場合、高次関数には、これらの引数が対応する同じ長さのいくつかの配列が渡されます。
以下のような一部の機能については arrayCount または アレイサム、最初の引数(ラムダ関数)は省略することができます。 この場合、同一の写像が仮定される。
Lambda関数は、次の関数では省略できません:
- arrayMap
- arrayFilter
- arrayFill
- arrayReverseFill
- arraySplit
- arrayReverseSplit
- arrayFirst
- arrayFirstIndex
arrayMap(func, arr1, …)
の元のアプリケーションから取得した配列を返します。 func
の各要素に対する関数 arr
配列
例:
SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res;
┌─res─────┐
│ [3,4,5] │
└─────────┘
異なる配列から要素のタプルを作成する方法を次の例に示します:
SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res
┌─res─────────────────┐
│ [(1,4),(2,5),(3,6)] │
└─────────────────────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayMap
機能。
arrayFilter(func, arr1, …)
要素のみを含む配列を返します。 arr1
そのために func
0以外のものを返します。
例:
SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res
┌─res───────────┐
│ ['abc World'] │
└───────────────┘
SELECT
arrayFilter(
(i, x) -> x LIKE '%World%',
arrayEnumerate(arr),
['Hello', 'abc World'] AS arr)
AS res
┌─res─┐
│ [2] │
└─────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayFilter
機能。
arrayFill(func, arr1, …)
スキャンスルー arr1
最初の要素から最後の要素へと置き換えます arr1[i]
によって arr1[i - 1]
もし func
0を返します。 の最初の要素 arr1
交換されません。
例:
SELECT arrayFill(x -> not isNull(x), [1, null, 3, 11, 12, null, null, 5, 6, 14, null, null]) AS res
┌─res──────────────────────────────┐
│ [1,1,3,11,12,12,12,5,6,14,14,14] │
└──────────────────────────────────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayFill
機能。
arrayReverseFill(func, arr1, …)
スキャンスルー arr1
最後の要素から最初の要素へと置き換えます arr1[i]
によって arr1[i + 1]
もし func
0を返します。 の最後の要素 arr1
交換されません。
例:
SELECT arrayReverseFill(x -> not isNull(x), [1, null, 3, 11, 12, null, null, 5, 6, 14, null, null]) AS res
┌─res────────────────────────────────┐
│ [1,3,3,11,12,5,5,5,6,14,NULL,NULL] │
└────────────────────────────────────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayReverseFill
機能。
arraySplit(func, arr1, …)
分割 arr1
複数の配列に。 とき func
0以外のものを返すと、配列は要素の左側で分割されます。 配列は最初の要素の前に分割されません。
例:
SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res─────────────┐
│ [[1,2,3],[4,5]] │
└─────────────────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arraySplit
機能。
arrayReverseSplit(func, arr1, …)
分割 arr1
複数の配列に。 とき func
0以外のものを返すと、配列は要素の右側に分割されます。 配列は最後の要素の後に分割されません。
例:
SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res───────────────┐
│ [[1],[2,3,4],[5]] │
└───────────────────┘
最初の引数(ラムダ関数)は省略できないことに注意してください。 arraySplit
機能。
arrayCount([func,] arr1, …)
Funcが0以外のものを返すarr配列内の要素の数を返します。 もし ‘func’ 指定されていない場合は、配列内のゼロ以外の要素の数を返します。
arrayExists([func,] arr1, …)
少なくとも一つの要素がある場合は1を返します ‘arr’ そのために ‘func’ 0以外のものを返します。 それ以外の場合は0を返します。
arrayAll([func,] arr1, …)
場合は1を返します ‘func’ 内のすべての要素に対して0以外のものを返します ‘arr’. それ以外の場合は0を返します。
arraySum([func,] arr1, …)
の合計を返します。 ‘func’ 値。 関数を省略すると、配列要素の合計が返されます。
arrayFirst(func, arr1, …)
の最初の要素を返します。 ‘arr1’ これに対する配列 ‘func’ 0以外のものを返します。
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayFirst
機能。
arrayFirstIndex(func, arr1, …)
の最初の要素のインデックスを返します。 ‘arr1’ これに対する配列 ‘func’ 0以外のものを返します。
最初の引数(ラムダ関数)は省略できないことに注意してください。 arrayFirstIndex
機能。
arrayCumSum([func,] arr1, …)
ソース配列内の要素の部分和(実行中の合計)の配列を返します。 もし func
関数が指定されると、配列要素の値は合計する前にこの関数によって変換されます。
例:
SELECT arrayCumSum([1, 1, 1, 1]) AS res
┌─res──────────┐
│ [1, 2, 3, 4] │
└──────────────┘
arrayCumSumNonNegative(arr)
同じ arrayCumSum
,ソース配列内の要素の部分和の配列を返します(実行中の合計)。 異なる arrayCumSum
返された値にゼロ未満の値が含まれている場合、値はゼロに置き換えられ、その後の計算はゼロパラメータで実行されます。 例えば:
SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res
┌─res───────┐
│ [1,2,0,1] │
└───────────┘
arraySort([func,] arr1, …)
の要素を並べ替えた結果として配列を返します arr1
昇順で。 もし func
関数が指定され、ソート順序は関数の結果によって決定されます func
配列(配列)の要素に適用されます)
その シュワルツ変換 分類の効率を改善するのに使用されています。
例:
SELECT arraySort((x, y) -> y, ['hello', 'world'], [2, 1]);
┌─res────────────────┐
│ ['world', 'hello'] │
└────────────────────┘
詳細については、 arraySort
方法は、参照してください 配列を操作するための関数 セクション
arrayReverseSort([func,] arr1, …)
の要素を並べ替えた結果として配列を返します arr1
降順で。 もし func
関数が指定され、ソート順序は関数の結果によって決定されます func
配列(配列)の要素に適用されます。
例:
SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘
詳細については、 arrayReverseSort
方法は、参照してください 配列を操作するための関数 セクション