

# 배열 요소에 액세스
<a name="accessing-array-elements"></a>

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