要在Amazon Athena中读取嵌套的JSON数据,可以按照以下步骤进行操作:
s3://bucket-name/path/to/json-data/,JSON数据结构如下:{
"id": 1,
"name": "John",
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY"
}
}
创建Athena表的DDL语句如下:
CREATE EXTERNAL TABLE IF NOT EXISTS my_table (
id INT,
name STRING,
address STRUCT<
street: STRING,
city: STRING,
state: STRING
>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
)
LOCATION 's3://bucket-name/path/to/json-data/'
SELECT address.city
FROM my_table
UNNEST函数展开数组。例如,假设JSON数据包含一个名为orders的数组字段,其中每个元素包含order_id和amount字段:{
"id": 1,
"name": "John",
"orders": [
{"order_id": 1, "amount": 100},
{"order_id": 2, "amount": 200}
]
}
可以使用以下查询语句获取每个订单的订单号和金额:
SELECT unnested_orders.order_id, unnested_orders.amount
FROM my_table
CROSS JOIN UNNEST(orders) AS t(unnested_orders)
通过按照上述步骤,您可以在Amazon Athena中读取和查询嵌套的JSON数据。