배열 요소에 액세스 - Amazon Athena

배열 요소에 액세스

배열 요소에 액세스하려면 다음 예에서와 같이 [] 연산자(1은 첫 번째 요소를, 2는 두 번째 요소를 지정하는 방식)를 사용합니다.

WITH dataset AS ( SELECT ARRAY[CAST(MAP(ARRAY['a1', 'a2', 'a3'], ARRAY[1, 2, 3]) AS JSON)] || ARRAY[CAST(MAP(ARRAY['b1', 'b2', 'b3'], ARRAY[4, 5, 6]) AS JSON)] AS items ) SELECT items[1] AS item FROM dataset

이 쿼리가 반환하는 값:

+------------------------+ | item | +------------------------+ | {"a1":1,"a2":2,"a3":3} | +------------------------+

주어진 위치(인덱스 위치라고 함)에서 배열 요소에 액세스하려면 element_at() 함수를 사용하여 배열 이름과 인덱스 위치를 지정합니다.

  • 인덱스가 0보다 큰 경우, element_at()은 지정된 요소를 배열의 처음부터 끝까지 계산하여 반환합니다. 이는 [] 연산자처럼 작동합니다.

  • 인덱스가 0보다 작은 경우, element_at()은 배열의 끝에서부터 시작까지 계산하여 요소를 반환합니다.

다음 쿼리는 배열 words를 만들고, 거기에서 first_word로 첫 번째 요소 hello를 선택하고, middle_word로 두 번째 요소 amazon을(배열의 끝에서부터 계산), last_word로 세 번째 요소 athena를 선택합니다.

WITH dataset AS ( SELECT ARRAY ['hello', 'amazon', 'athena'] AS words ) SELECT element_at(words, 1) AS first_word, element_at(words, -2) AS middle_word, element_at(words, cardinality(words)) AS last_word FROM dataset

이 쿼리가 반환하는 값:

+----------------------------------------+ | first_word | middle_word | last_word | +----------------------------------------+ | hello | amazon | athena | +----------------------------------------+