限制 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

限制

以下是针对大于 1 MB 的预览版 SUPER 数据类型字段的预发行文档。文档和功能都可能会更改。我们建议您只在测试集群中使用此功能,而不要在生产环境中使用。公开预览将于 2023 年 4 月 30 日结束。在预览结束两周后会自动删除预览集群和预览无服务器工作组和命名空间。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版和预览
注意

您可以在 Preview(预览)中创建 Amazon Redshift 集群,以便测试 Amazon Redshift 的新功能。您无法在生产环境中使用这些功能,也无法将 Preview(预览)集群移动到生产集群或另一个跟踪上的集群。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版和预览

Preview(预览)中创建集群
  1. 登录到 Amazon Web Services Management Console并打开 Amazon Redshift 控制台,网址:https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择 Provisioned clusters dashboard(预置集群控制面板),然后选择 Clusters(集群)。列出您的账户在当前 Amazon Web Services 区域 区域中的集群。列表中的各个列中显示了每个集群的一部分属性。

  3. Clusters(集群)列表页面上会显示一个横幅,其中介绍了预览。选择 Create preview cluster(创建预览集群)按钮以打开创建集群页面。

  4. 输入集群的属性。选择包含要测试的功能的 Preview track(预览跟踪)。我们建议输入的集群名称指明要对该集群进行预览跟踪。为您的集群选择选项,包括标记为 -preview 的选项,用于要测试的功能。有关创建集群的一般信息,请参阅《Amazon Redshift 管理指南》中的创建集群

  5. 选择 Create preview cluster(创建预览集群)以在预览中创建集群。

  6. 当您的预览集群可用时,使用 SQL 客户端加载和查询数据。

您的集群必须使用名为 preview_2022 的预览跟踪来创建。

您可以在 Preview(预览)中创建 Amazon Redshift Serverless 工作组,以便测试 Amazon Redshift Serverless 的新功能。您无法在生产中使用这些功能,也无法将 Preview(预览)工作组移至生产工作组。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版和预览

Preview(预览)中创建工作组
  1. 登录到 Amazon Web Services Management Console并打开 Amazon Redshift 控制台,网址:https://console.aws.amazon.com/redshift/

  2. 在导航菜单上,选择 Severless dashboard(Severless 控制面板),然后选择 Workgroup configuration(工作组配置)。列出您的账户在当前 Amazon Web Services 区域 中的工作组。列表中的各列中显示了每个工作组的一部分属性。

  3. Workgroups(工作组)列表页面上会显示一个横幅,其中介绍了预览。选择 Create preview workgroup(创建预览工作组)按钮以打开创建工作组页面。

  4. 输入工作组的属性。我们建议输入的工作组名称指明该工作组处于预览状态。为您的工作组选择选项,包括标记为 -preview 的选项,用于要测试的功能。继续浏览页面,为您的工作组和命名空间输入选项。有关创建工作组的一般信息,请参阅《Amazon Redshift 管理指南》中的创建带有命名空间的工作组

  5. 选择 Create preview workgroup(创建预览工作组)以在预览模式下创建工作组。

  6. 当您的预览工作组可用时,使用 SQL 客户端加载和查询数据。

使用 SUPER 数据类型时,请考虑以下限制:

  • 不能将 SUPER 列定义为分配键或排序键。

  • 单个 SUPER 字段或对象最多可保存 16 MB 的数据。

  • SUPER 对象中的单个值被限制为对应 Amazon Redshift 类型的最大长度。例如,加载到 SUPER 的单个字符串值限制为 65535 个字节的最大 VARCHAR 长度。

  • 不能对 SUPER 列执行部分更新或转换操作。

  • 您不能在右联接或完全外连接中使用 SUPER 数据类型及其别名。

  • SUPER 数据类型不支持 XML 作为入站或出站序列化格式。

  • 在引用用于取消嵌套的表变量的子查询(相关或不相关)的 FROM 子句中,查询只能引用其父表而不能引用其他表。

  • 转换限制

    SUPER 值可以转换为其他数据类型或从其他数据类型进行转换,但存在一些例外情况:

    • Amazon Redshift 不区分小数位数为 0 的整数和小数。

    • 如果小数位数不为零,则 SUPER 数据类型的行为与其他 Amazon Redshift 数据类型相同,但 Amazon Redshift 会将与 SUPER 相关的错误转换为 null,如以下示例所示。

      SELECT 5::bool; bool ------- True (1 row) SELECT 5::decimal::bool; ERROR: cannot cast type numeric to boolean SELECT 5::super::bool; bool ------- True (1 row) SELECT 5.0::bool; ERROR: cannot cast type numeric to boolean SELECT 5.0::super::bool; bool ------- (1 row)
    • Amazon Redshift 不会将日期和时间类型转换为 SUPER 数据类型。Amazon Redshift 只能从超级数据类型转换日期和时间数据类型,如以下示例所示。

      SELECT o.o_orderdate FROM customer_orders_lineitem c,c.c_orders o; order_date ------------------ "2001-09-08" (1 row) SELECT JSON_TYPEOF(o.o_orderdate) FROM customer_orders_lineitem c,c.c_orders o; json_typeof ----------------- string (1 row) SELECT o.o_orderdate::date FROM customer_orders_lineitem c,c.c_orders o; order_date ---------------- 2001-09-08 (1 row) --date/time cannot be cast to super SELECT '2019-09-09'::date::super; ERROR: cannot cast type date to super
    • 从非标量值(对象和数组)转换为字符串将返回 NULL。要正确序列化这些非标量值,请不要转换它们。请改用 json_serialize 来转换非标量值。json_serialize 函数返回一个 varchar。通常,您不需要将非标量值转换为 varchar,因为 Amazon Redshift 会隐式序列化,如以下第一个示例所示。

      SELECT r_nations FROM region_nations WHERE r_regionkey=300; r_nations ---------------- [1,"abc",null] (1 row) SELECT r_nations::varchar FROM region_nations WHERE r_regionkey=300; r_nations ------------- (1 row) SELECT JSON_SERIALIZE(r_nations) FROM region_nations WHERE r_regionkey=300; json_serialize ----------------- [1,"abc",null] (1 row)
    • 对于不区分大小写的数据库,Amazon Redshift 不支持 SUPER 数据类型。对于不区分大小写的列,Amazon Redshift 不会将它们转换为 SUPER 类型。因此,Amazon Redshift 不支持 SUPER 列与触发转换的不区分大小写的列交互。

  • Amazon Redshift 在子查询中不支持易失性函数,例如 RANDOM ( ) 或 TIMEOFDAY ( ),这些子查询使用此类子查询取消嵌套外部表或 IN 函数的左侧 (LHS)。

  • 如果表中的 SUPER 类型列保存任何大于 1 MB 的 SUPER 对象,则 Amazon Redshift 不支持使用以下查询功能。

    • 跨功能限制

      • 数据共享

      • 并发扩展

      • 查询联合身份验证

    • 核心工作流限制

      • 弹性调整大小和跨实例还原

    • 摄取限制

      • Parquet 和 JSON 是唯一支持在包含 16 MB SUPER 类型对象的表上使用 COPY 命令的文件格式。

    • 查询限制

      • 如果查询包括用于保存 SUPER 数据的列,则使用不同的聚合

      • 用于访问保存 SUPER 数据的列的 Python 用户定义函数(UDF)

      • 具有保存 SUPER 数据的列的表上的递归公用表表达式(CTE)