メインコンテンツまでスキップ
バージョン: 4.x

ARRAY_SPLIT

説明

  1. 等しい長さの2つのARRAYを渡します。2番目の配列はArray<Boolean>で、cond内でtrueが見つかった位置の左側の分割点に従ってarrを分割します。
  2. 高階関数で、ラムダ式と少なくとも1つのARRAY arrを渡し、ラムダ式演算の結果であるArray<Boolean>内のtrue位置の左側でarrを分割します。

構文

ARRAY_SPLIT(<arr>, <cond>)
ARRAY_SPLIT(<lambda>, arr [, ...])

パラメータ

Parameterデスクリプション
<lambda>入力パラメータが指定された配列の列数と一致する必要があるlambda式。この式は有効なスカラ関数を実行できますが、集約関数はサポートしていません。
<arr>ARRAY配列

Return Value

指定された条件に従って配列が分割されたARRAY型の結果を返します。

Example

select array_split([1,2,3,4,5], [1,0,1,0,0]);
+-----------------------------------------------------------------------+
| array_split([1, 2, 3, 4, 5], cast([1, 0, 1, 0, 0] as ARRAY<BOOLEAN>)) |
+-----------------------------------------------------------------------+
| [[1, 2], [3, 4, 5]] |
+-----------------------------------------------------------------------+
select array_split((x,y)->y, [1,2,3,4,5], [1,0,0,0,0]);
+----------------------------------------------------------------------------------------------------------------+
| array_split([1, 2, 3, 4, 5], cast(array_map((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 0, 0]) as ARRAY<BOOLEAN>)) |
+----------------------------------------------------------------------------------------------------------------+
| [[1, 2, 3, 4, 5]] |
+----------------------------------------------------------------------------------------------------------------+
select array_split((x,y)->(y+1), ['a', 'b', 'c', 'd'], [-1, -1, 0, -1]);
+--------------------------------------------------------------------------------------------------------------------------------+
| array_split(['a', 'b', 'c', 'd'], cast(array_map((x, y) -> (y + 1), ['a', 'b', 'c', 'd'], [-1, -1, 0, -1]) as ARRAY<BOOLEAN>)) |
+--------------------------------------------------------------------------------------------------------------------------------+
| [["a", "b"], ["c", "d"]] |
+--------------------------------------------------------------------------------------------------------------------------------+
select array_split(x->(year(x)>2013),["2020-12-12", "2013-12-12", "2015-12-12", null]);
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| array_split(['2020-12-12', '2013-12-12', '2015-12-12', NULL], array_map(x -> (year(cast(x as DATEV2)) > 2013), ['2020-12-12', '2013-12-12', '2015-12-12', NULL])) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [["2020-12-12", "2013-12-12"], ["2015-12-12"], [null]] |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+