限制 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

限制

使用 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 只能從 SUPER 資料類型轉換日期和時間資料類型,如下範例所示。

      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) 與此類子查詢解除巢狀化。