要在 Athena 中生成数组文本,请使用 ARRAY
关键字,后跟方括号 [ ]
,并包括以逗号分隔的数组元素。
示例
此查询会创建一个具有四个元素的数组。
SELECT ARRAY [1,2,3,4] AS items
它返回:
+-----------+
| items |
+-----------+
| [1,2,3,4] |
+-----------+
此查询创建两个数组。
SELECT ARRAY[ ARRAY[1,2], ARRAY[3,4] ] AS items
它返回:
+--------------------+
| items |
+--------------------+
| [[1, 2], [3, 4]] |
+--------------------+
要从兼容类型的选定列创建数组,请如以下示例所示使用查询:
WITH
dataset AS (
SELECT 1 AS x, 2 AS y, 3 AS z
)
SELECT ARRAY [x,y,z] AS items FROM dataset
此查询返回:
+-----------+
| items |
+-----------+
| [1,2,3] |
+-----------+
在以下示例中,选定了两个数组,并将其作为欢迎词返回。
WITH
dataset AS (
SELECT
ARRAY ['hello', 'amazon', 'athena'] AS words,
ARRAY ['hi', 'alexa'] AS alexa
)
SELECT ARRAY[words, alexa] AS welcome_msg
FROM dataset
此查询返回:
+----------------------------------------+
| welcome_msg |
+----------------------------------------+
| [[hello, amazon, athena], [hi, alexa]] |
+----------------------------------------+
要创建一个键值对,请使用 MAP
运算符,以便采用一个键数组后跟一个值数组,如以下示例所示:
SELECT ARRAY[
MAP(ARRAY['first', 'last', 'age'],ARRAY['Bob', 'Smith', '40']),
MAP(ARRAY['first', 'last', 'age'],ARRAY['Jane', 'Doe', '30']),
MAP(ARRAY['first', 'last', 'age'],ARRAY['Billy', 'Smith', '8'])
] AS people
此查询返回:
+-----------------------------------------------------------------------------------------------------+
| people |
+-----------------------------------------------------------------------------------------------------+
| [{last=Smith, first=Bob, age=40}, {last=Doe, first=Jane, age=30}, {last=Smith, first=Billy, age=8}] |
+-----------------------------------------------------------------------------------------------------+