🎃
Cloud Spanner のGoogleSQL句に新しく追加されたARRAY関数とLambda式
はじめに
こんにちは、クラウドエース データML ディビジョン所属の永山です。
クラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータML ディビジョンになります。
データML ディビジョンでは活動の一環として、毎週Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。
今回紹介するリリースは、「Cloud Spanner のGoogleSQL句に新しく追加されたARRAY関数とLambda式」についてになります。
このリリースによって、新たなARRAY関数の機能が追加され、配列の処理がよりシンプルに行えるようになりました。
リリース内容と検証
本稿では、新しく追加された以下の機能についてまとめました。
- ARRAY_INCLUDES_ALL 関数
- ARRAY_INCLUDES_ANY 関数
- ARRAY_MIN 関数
- ARRAY_MAX 関数
- Lambda 式
- ARRAY_FILTER 関数
- ARRAY_TRANSFORM 関数
Cloud Spanner のリリースノート(2023/3/17、2023/3/21)
ARRAY_INCLUDES_ALL 関数
- 検索対象の配列にすべての検索値が含まれている場合は
TRUE
を返し、そうでない場合はFALSE
を返します。 - フォーマットは以下になります。
ARRAY_INCLUDES_ALL( 検索対象の配列, 検索値の配列 )
関数 | 出力値 |
---|---|
ARRAY_INCLUDES_ALL([1,2,3,4,5], [3,4,5]) | TRUE |
ARRAY_INCLUDES_ALL([1,2,3,4,5], [4,5,6]) | FALSE |
ARRAY_INCLUDES_ANY 関数
- 検索対象の配列に一つでも検索値が含まれている場合は
TRUE
を返し、そうでない場合はFALSE
を返します。 - フォーマットは以下になります。
ARRAY_INCLUDES_ANY( 検索対象の配列, 検索値の配列 )
関数 | 出力値 |
---|---|
ARRAY_INCLUDES_ANY([1,2,3], [3,4,5]) | TRUE |
ARRAY_INCLUDES_ANY([1,2,3], [4,5,6]) | FALSE |
ARRAY_MIN 関数
- 配列内の最小値を返します(文字列の場合は一番短い文字列)。
- 配列自体がNULLの場合や、配列の要素が空、またはNULLのみ含まれている場合、NULLが返されます。
- 配列にNaNが含まれている場合はNaNが返されます。
- フォーマットは以下になります。
ARRAY_MIN( 配列 )
関数 | 出力値 |
---|---|
ARRAY_MIN([8,37,NULL,55,4]) | 4 |
ARRAY_MIN(["a","bb","ccc",NULL,"dddd"]) | a |
ARRAY_MIN(NULL) | NULL |
ARRAY_MIN([]) | NULL |
ARRAY_MIN([NULL,NULL,NULL]) | NULL |
ARRAY_MAX 関数
- 配列内の最大値を返します(文字列の場合は一番長い文字列)。
- 配列自体がNULLの場合や、配列の要素が空、またはNULLのみ含まれている場合、NULLが返されます。
- 配列にNaNが含まれている場合はNaNが返されます。
- フォーマットは以下になります。
ARRAY_MAX( 配列 )
関数 | 出力値 |
---|---|
ARRAY_MAX([8,37,NULL,55,4]) | 55 |
ARRAY_MAX(["a","bb","ccc",NULL,"dddd"]) | dddd |
ARRAY_MIN(NULL) | NULL |
ARRAY_MIN([]) | NULL |
ARRAY_MIN([NULL,NULL,NULL]) | NULL |
Lambda 式
- 以下の関数でLambda式を設定することが可能です。
- 以下のフォーマットでLambda式を構成
element_alias -> boolean_expression
- 以下のフォーマットでLambda式を構成
element_alias -> boolean_expression
または
(element_alias, index_alias) -> boolean_expression
- 以下のフォーマットでLambda式を構成
element_alias -> boolean_expression
または
(element_alias, index_alias) -> boolean_expression
-
検索対象の配列の値がLambda式で指定した範囲に含まれれば
TRUE
を返し、含まれない場合はFALSE
を返す。関数 出力値 ARRAY_INCLUDES([1,2,3], e -> e > 2) TRUE ARRAY_INCLUDES([1,2,3], e -> e > 3) FALSE
- 以下のフォーマットでLambda式を構成
ARRAY_FILTER 関数
- 対象配列にフィルターをかけた結果を返します。
- 対象配列がNULLの場合、NULLが返されます。
- フォーマットは以下になります。
ARRAY_FILTER( 対象配列, Lambda式 )
関数 | 出力値 |
---|---|
ARRAY_FILTER([1,2,3], e -> e > 1) | [2,3] |
ARRAY_FILTER([-1,-2,2,5], (e, i) -> e > i) | [5] |
ARRAY_TRANSFORM 関数
- 対象配列にLambda式で変換をかけた結果を返します。
- 対象配列がNULLの場合、NULLが返されます。
- フォーマットは以下になります。
ARRAY_TRANSFORM( 対象配列, Lambda式 )
関数 | 出力値 |
---|---|
ARRAY_TRANSFORM([1,2,3], e -> e + 1) | [2,3,4] |
ARRAY_TRANSFORM([1,2,3], (e, i) -> e + i) | [1,3,5] |
まとめ
今回の記事の内容をまとめると、Cloud SpannerにGoogleSQLで使用できる関数やLambda式が増えたことで、より一層データの抽出や処理がシンプルに実行できるようになります。
これからも新しい機能の追加に期待です。
Discussion