

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès à des éléments de tableau
<a name="accessing-array-elements"></a>

Pour accéder à des éléments de tableau, utilisez l'opérateur `[]`, avec 1 spécifiant le premier élément, 2 le deuxième élément, et ainsi de suite, comme dans cet exemple :

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

Cette requête renvoie :

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

Pour accéder aux éléments d'un tableau à une position donnée (appelée position d'index), utilisez la fonction `element_at()`, puis spécifiez le nom du tableau et la position d'index :
+ Si l'index est supérieur à 0, `element_at()` renvoie l'élément que vous spécifiez, en comptant du début à la fin du tableau. La fonction se comporte comme l'opérateur `[]`.
+ Si l'index est inférieur à 0, `element_at()` renvoie l'élément que vous spécifiez, en comptant de la fin au début du tableau.

La requête suivante crée un tableau `words`, puis sélectionne dans celui-ci le premier élément `hello` en tant que `first_word`, le deuxième élément `amazon` (en partant de la fin du tableau) en tant que `middle_word` et le troisième élément `athena` en tant que `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
```

Cette requête renvoie :

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