配列要素へのアクセス - Amazon Athena

配列要素へのアクセス

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