최종 수정: 에
ARRAY_SORTBY
기능
values 배열을 keys 배열의 순서에 따라 정렬합니다.
- 예를 들어,
keys가[3, 0, 2]이고values가[5, 7, 8]이면 정렬 후keys는[0, 2, 3]이 되고, 이에 대응하는values는[7, 8, 5]가 됩니다.
구문
ARRAY_SORTBY(values, keys)ARRAY_SORTBY(lambda, values)ARRAY_SORTBY(lambda, values)는ARRAY_SORTBY(values, ARRAY_MAP(lambda, values))와 동일합니다.
매개변수
values:ARRAY<T>타입의 정렬할 값 배열입니다.T는 numeric, boolean, string, datetime, IP, UUID 등의 타입을 지원합니다. 다차원 배열도 지원하지만, 중첩 깊이에 관계없이 모든 배열 요소는 지원되는 타입이어야 합니다.keys:ARRAY<T>타입의 키 배열로, 길이는values와 같습니다.T는 numeric, boolean, string, datetime, IP, UUID 등의 타입을 지원합니다. 다차원 배열도 지원하지만, 중첩 깊이에 관계없이 모든 배열 요소는 지원되는 타입이어야 합니다.lambda:lambda표현식으로,values에 적용하여 정렬에 사용할keys배열을 생성합니다.
반환 값
ARRAY<T>를 반환하며, 타입은values와 같습니다.- 어떤 행에서든
values와keys의 요소 수가 다르면 오류가 발생합니다.
사용 시 참고 사항
- 안정성:
values는keys의 오름차순에 따라 재배열됩니다. 키가 같은 요소 간의 상대 순서는 정의되어 있지 않습니다. - 고차 함수 호출에서는
keys를 먼저ARRAY_MAP으로 계산한 다음,values를keys에 따라 정렬합니다.
예제
-
기본:
values를keys의 오름차순에 따라 정렬합니다.ARRAY_SORTBY([10,20,30], [3,1,2])->[20,30,10]ARRAY_SORTBY(['a','b','c'], [2,2,1])->['c','a','b']
-
고차 함수:
keys를lambda로 계산한 다음 정렬합니다.ARRAY_SORTBY(x -> x + 1, [3,1,2])->[1,2,3](keys는[4,2,3])ARRAY_SORTBY(x -> x*2 <= 2, [1,2,3])->[2,3,1](keys는[true,false,false])
-
keys또는values가NULL이면values를 그대로 반환합니다.array_sortby([10,20,30], NULL)->[10, 20, 30]array_sortby(NULL, [2,3])->NULL
-
다차원 배열 정렬: 키 정렬 규칙은 내부 요소의 타입을 따릅니다.
ARRAY_SORTBY(x -> x[1], [[1,2],[0,1]])->[[0, 1], [1, 2]]