

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# 制限事項
<a name="limitations-super"></a>

Amazon Redshift では、SUPER データ型を使用して、JSON、Avro、Ion などの半構造化データを保存およびクエリできます。SUPER データ型の制限とは、Amazon Redshift でこのデータ型を使用する場合の制約と境界を指します。以下のセクションでは、最大サイズ、ネストレベル、半構造化データでサポートされるデータ型など、SUPER データ型の特定の制限について詳しく説明します。
+ SUPER 列をディストリビューションキーまたはソートキーとして定義することはできません。
+ 各 SUPER オブジェクトは、最大 16 MB のデータを保持できます。
+ SUPER データ型における配列と構造の最大ネスト深度は 1,000 です。
+ 単一の SUPER オブジェクトに保存される文字列リテラルは、16,000,000 バイトに制限されます。
+ 制限を超えると、SUPER オブジェクト内の個々の値は、Amazon Redshift で対応しているデータ型での最大長に制限されます。
+ SUPER 列に対して部分的な更新または変換オペレーションを実行することはできません。
+ 右結合または完全外部結合では、SUPER データ型とそのエイリアスを使用することはできません。
+ SUPER データ型は、インバウンドまたはアウトバウンドのシリアル化形式として XML をサポートしていません。
+ ネストを解除するためにテーブル変数を参照するサブクエリ (相関関係があるかどうかにかかわらず) の FROM 句では、クエリはその親テーブルのみを参照でき、他のテーブルは参照できません。
+  再帰共通テーブル式 (`WITH RECURSIVE`) によって生成された SUPER 列に対して、ネスト解除やオブジェクトのピボット解除を行うことはできません。再帰 CTE の詳細については、「[再帰的なテーブル共通式](r_WITH_clause.md#r_WITH_clause-recursive-cte)」を参照してください。
+ キャストの制限事項

  SUPER 値は、次の例外を除いて、他のデータ型との間でキャストできます。
  + Amazon Redshift は、スケール 0 の整数と小数点を区別しません。
  + スケールがゼロでない場合、SUPER データ型は他の Amazon Redshift データ型と同じ動作をします。ただし、Amazon Redshift は、次の例に示すように、スーパー関連のエラーを 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 を返します。次の最初の例に示すように、Amazon Redshift は暗黙的にシリアル化されるため、通常、非スカラー値を varchar にキャストする必要はありません。

    ```
    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 は、サブクエリで IN 関数の外部テーブルまたは左側 (LHS) を検出しないサブクエリでは、RANDOM ( ) や TIMEOFDAY ( ) などの揮発性関数をサポートしません。