Log Serviceでは、SQL分析ステートメントでラムダ式を定義し、その式を指定された関数に渡すことができます。 このトピックでは、ラムダ式の構文について説明します。 このトピックでは、式の使用方法の例も提供します。
構文
フィルター関数 、reduce関数、変換関数、zip_with関数、map_filter機能などの関数とともにラムダ式を使用する必要があります。
parameter -> expression
項目 | 説明 |
---|---|
パラメータ | パラメーターを渡すために使用される識別子。 |
式 | ほとんどのMySQL式を含むことができるラムダ式。 例:
|
例
例1: x -> xがnullではない
このラムダ式は、[5, null, 7, null] 配列のnullでない要素を返すために使用されます。
- クエリ文
* | SELECTフィルター (array[5, null, 7, null], x -> xはnullではありません)
- クエリおよび分析の結果
例2: 0, (s, x) -> s + x, s -> s
Thisラムダ式は、リターンに使用の合計各要素 [5、20、50] アレイ。
- クエリ文
* | SELECT reduce(array [5,20, 50], 0, (s, x) -> s + x, s -> s)
- クエリおよび分析の結果
Example 3: (k、v) -> v > 10
このラムダ式は、2つの配列からマップを作成するために使用されます。 マップ内のキーの値は10より大きい。
- クエリ文
* | SELECT map_filter(map(array['class01', 'class02', 'class03'], array [11,10, 9]), (k,v) -> v > 10)
- クエリおよび分析の結果
例4 :( x, y) -> (y, x)
このラムダ式は、2つの配列の要素を転置し、同じインデックスを使用して配置された要素を取得して新しい2次元配列を形成するために使用されます。
- クエリ文
* | SELECT zip_with (アレイ [1、3、5] 、アレイ ['' 、「b」、「c」] 、(x、y) -> (y、x))
- クエリおよび分析の結果
例5: x -> coalesce(x, 0) + 1
このラムダ式は、[5, NULL, 6] 配列の各要素に1を追加して結果を返すために使用されます。 配列のnull要素は、1に加算される前に0に変換されます。
- クエリ文
* | SELECT transform(array[5, NULL, 6], x -> coalesce(x, 0) + 1)
- クエリおよび分析の結果
追加の例
* | SELECTフィルター (array[], x -> true)
* | SELECT map_filter(map(array[],array[]), (k, v) -> true)
* | SELECT reduce(array[5, 6, 10, 20], -- calculates arithmetic average: 10.25)
キャスト (row(0.0, 0) AS row(sum double, count integer)) 、
(s、x) -> cast(row(x + s.sum、s.count + 1) AS row(sum double、count integer)) 、
s -> if(s.count = 0, null, s.sum / s.count)
* | SELECT reduce(array[2147483647, 1], cast(0 AS bigint), (s, x) -> s + x, s -> s)
* | SELECT reduce(array [5,20, null, 50], 0, (s, x) -> s + x, s -> s)
* | SELECT transform(array[1, null, 2], array[3, null]], a -> filter(a, x -> xはnullではない))
* | SELECT zip_with(array['a', 'b', 'c'], array['d', 'e', 'f'], (x, y) -> concat(x, y))