

# Acessar elementos de matrizes
<a name="accessing-array-elements"></a>

Para acessar elementos de matriz, use o operador `[]`, com 1 especificando o primeiro elemento, 2 especificando o segundo elemento e assim por diante, como neste exemplo:

```
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
```

Essa consulta retorna:

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

Para acessar os elementos de uma matriz em uma determinada posição (conhecida como a posição de índice), use a função `element_at()` e especifique o nome da matriz e a posição de índice:
+ Se o índice for maior que 0, `element_at()` retornará o elemento especificado por você, contando do início ao fim da matriz. Ele se comporta como o operador `[]`.
+ Se o índice for menor que 0, `element_at()` retornará o elemento, contando do fim ao início da matriz.

A consulta a seguir cria uma matriz `words`e seleciona o primeiro elemento `hello` dela como o `first_word`, o segundo elemento `amazon` (contagem a partir do final da matriz) como o `middle_word` e o terceiro elemento `athena` como o `last_word`.

```
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
```

Essa consulta retorna:

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