配列要素にアクセスするには、[]
演算子を使用します。次の例のように、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 |
+----------------------------------------+