Split the input array into multiple subarrays according to given boolean flags.
arr=[a1,a2,...,an] and flags=[f1,f2,...,fn], at every position where fi==true, split between ai and a(i-1).arr=[3, 4, 5] and flags=[false, true, false], the second flag is true, so split between the first and second elements, resulting in two subarrays [3] and [4,5].ARRAY_SPLIT(arr, flags)ARRAY_SPLIT(lambda, arr0, ...)ARRAY_SPLIT(lambda, arr0, ...) is equivalent to ARRAY_SPLIT(arr0, ARRAY_MAP(lambda, arr0, ...))arr: ARRAY<T>.flags: ARRAY<BOOLEAN>, whose length must match that of arr row by row. true means split between the current position and the next element.arr0, ...: one or more ARRAY<T>.lambda: a lambda expression applied to arr0, ... to produce flags, which are then used for splitting.ARRAY<ARRAY<T>>. Elements of inner arrays are the same as those of arr.arr and flags do not match, an error is thrown.flags is NULL, it is treated as no split (equivalent to false).ARRAY_SPLIT is: at each position where fi==true, split between ai and a(i-1).ARRAY_REVERSE_SPLIT is: at each position where fi==true, split between ai and a(i+1).Basic splitting: at each true position, split from the left side neighbor.
ARRAY_SPLIT([1,2,3,4,5], [false,true,false,true,false]) -> [[1], [2, 3], [4, 5]]ARRAY_SPLIT(['a','b','c'], [false,false,false]) -> [['a','b','c']]With NULL in flags: NULL is treated the same as false (no split).
ARRAY_SPLIT([1,NULL,3], [false,null,false]) -> [[1,[NULL,3]]lambda= x -> x-1 applied to arr0=[1, 2, 3] produces flags=[0,1,2], equivalent to flags=[false,true,true]
ARRAY_SPLIT(x->x-1, [1, 2, 3]) is equivalent to ARRAY_SPLIT([1, 2, 3], [false,true,true]) -> [[1], [2], [3]]lambda= (x,y) -> x-y applied to arr0=[1, 2, 3] and arr1=[0,1,2] produces flags=[true,true,true]
ARRAY_SPLIT((x,y) -> x-y, [1, 2, 3], [0, 1, 2]) is equivalent to ARRAY_SPLIT([1, 2, 3], [true,true,true]) -> [[1], [2], [3]]