すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Lambda 式

最終更新日:Nov 19, 2024

Simple Log Serviceを使用すると、構造化クエリ言語 (SQL) またはSimple Log Service Processing Language (SPL) でラムダ式を定義し、その式を指定された関数に渡すことができます。 このトピックでは、ラムダ式の構文と使用例について説明します。

構文

filter functionreduce functiontransform functionzip_with functionmap_filter functionなどの関数とともにラムダ式を使用する必要があります。

parameter -> expression

パラメーター

説明

パラメーター

パラメーターを渡すために使用される識別子。

ほとんどのMySQL式を含むことができるラムダ式。 例:

x -> x + 1
(x, y) -> x + y
x -> regexp_like(x, 'a+')
x -> x[1] / x[2]
x -> if(x > 0, x, -x)
x -> coalesce(x, 0)
x -> cast(x AS JSON)
x -> x + try(1 / 0)

例1: x -> xがnullではない

このラムダ式は、[5, null, 7, null] 配列のnullでない要素を返すために使用されます。

  • クエリ文

    * | SELECT filter(array[5, null, 7, null], x -> x is not null)
  • クエリと分析結果 filter function

例2: 0, (s, x) -> s + x, s -> s

このラムダ式は、[5,20, 50] 配列の各要素の合計を返すために使用されます。

  • クエリ文

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • クエリと分析結果 reduce

例3 :( k,v) -> v > 10

このラムダ式は、2つの配列からマップを作成するために使用されます。 マップ内のキーの値は10より大きい。

  • クエリ文

    * | SELECT map_filter(map(array['class01', 'class02', 'class03'], array[11, 10, 9]), (k,v) -> v > 10)
  • クエリと分析結果 map_filter

例4 :( x, y) -> (y, x)

このラムダ式は、2つの配列の要素を転置し、同じインデックスを使用して配置された要素を取得して新しい2次元配列を形成するために使用されます。

  • クエリ文

    * | SELECT zip_with(array[1, 3, 5], array['a', 'b', 'c'], (x, y) -> (y, x))
  • クエリと分析結果 zip_with

例5: x -> coalesce(x, 0) + 1

このラムダ式は、[5, NULL, 6] 配列の各要素に1を追加して結果を返すために使用されます。 配列のnull要素は、1に加算される前に0に変換されます。

  • クエリ文

    * | SELECT transform(array[5, NULL, 6], x -> coalesce(x, 0) + 1)
  • クエリと分析結果 transform

追加の例

* | SELECT filter(array[], x -> true)
* | SELECT map_filter(map(array[],array[]), (k, v) -> true)
* | SELECT reduce(array[5, 6, 10, 20], -- calculates arithmetic average: 10.25
              cast(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[array[1, null, 2], array[3, null]], a -> filter(a, x -> x is not null))
* | SELECT zip_with(array['a', 'b', 'c'], array['d', 'e', 'f'], (x, y) -> concat(x, y))