存取陣列元素 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

存取陣列元素

若要存取陣列元素,使用 [] 運算子,並以 1 指定第一個元素,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,選取第二個元素 amazon (從陣列結尾往前算) 做為 middle_word,選取第三個元素 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 | +----------------------------------------+