Amazon Redshift
数据库开发人员指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

步骤 1:创建包含嵌套数据的外部表

要创建本教程所需的外部表,请运行以下命令。

CREATE EXTERNAL TABLE spectrum.customers ( id int, name struct<given:varchar(20), family:varchar(20)>, phones array<varchar(20)>, orders array<struct<shipdate:timestamp, price:double precision>> ) STORED AS PARQUET LOCATION 's3://awssampledbuswest2/nested_example/customers/';

在前述示例中,外部表 spectrum.customers 使用 structarray 数据类型定义具有嵌套数据的列。Amazon Redshift Spectrum 支持以 Parquet、ORC、JSON 和 Ion 文件格式查询嵌套数据。LOCATION 参数必须引用包含嵌套数据或文件的 Amazon S3 文件夹。

注意

Amazon Redshift 在 Amazon Redshift 数据库表中不支持复杂数据类型。您只能将复杂数据类型用于 Redshift Spectrum 外部表。

可以在任何级别嵌套 arraystruct 类型。例如,您可以定义一个名为 toparray 的列,如以下示例所示。

toparray array<struct<nestedarray: array<struct<morenestedarray: array<string>>>>>

您也可以为 struct 列嵌套 x 类型,如以下示例所示。

x struct<a: string, b: struct<c: integer, d: struct<e: string> > >