배열 요소에 액세스하려면 다음 예에서와 같이 []
연산자(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 |
+----------------------------------------+