访问数组元素 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

访问数组元素

要访问数组元素,请使用 [] 运算符,用 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 | +----------------------------------------+