

# 配列要素にアクセスする
<a name="accessing-array-elements"></a>

配列要素にアクセスするには、`[]` 演算子を使用します。次の例のように、1 に最初の要素、2 に 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` を作成し、この配列の最初の要素 `hello` を `first_word`、2 番目の要素 `amazon` (配列の末尾からカウント) を `middle_word`、3 番目の要素 `athena` を `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
```

このクエリは以下を返します。

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