배열 필터링 - Amazon Athena

배열 필터링

필터 조건과 일치하는 행 모음에서 배열을 만듭니다.

WITH dataset AS ( SELECT ARRAY[1,2,3,4,5] AS items ) SELECT array_agg(i) AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE i > 3

이 쿼리가 반환하는 값:

+-------------+ | array_items | +-------------+ | [4, 5] | +-------------+

다음 예와 같이 요소 중 하나에 특정 값(예: 2)이 포함되어 있는지 여부에 따라 배열을 필터링합니다.

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ) SELECT i AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE contains(i, 2)

이 쿼리가 반환하는 값:

+--------------+ | array_items | +--------------+ | [1, 2, 3, 4] | +--------------+

filter 함수 사용

filter(ARRAY [list_of_values], boolean_function)

ARRAY 표현식의 filter 함수를 사용하여 boolean_function이 true인 list_of_values에 항목의 하위 집합인 새 배열을 만듭니다. filter 함수는 UNNEST 함수를 사용할 수 없는 경우에 유용할 수 있습니다.

다음 예제에서는 [1,0,5,-1] 배열에서 0보다 큰 값으로 필터링합니다.

SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
결과

[1,5]

다음 예제에서는 [-1, NULL, 10, NULL] 배열에서 null이 아닌 값으로 필터링합니다.

SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
결과

[-1,10]