Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事
ネストデータの制限 (プレビュー)
このトピックでは、Redshift Spectrum でネストされたデータを読み込むための制限事項について説明します。ネストデータは、ネストされたフィールドを含むデータです。ネストされたフィールドは、配列、構造体、オブジェクトなど、単一のエンティティとして結合されるフィールドです。
注記
次のリストで「(プレビュー)」とマークされている制限は、以下のリージョンで作成されたプレビュークラスターにのみ適用されます。
米国東部 (オハイオ) (us-east-2)
米国東部 (バージニア北部) (us-east-1)
米国西部 (北カリフォルニア) (us-west-1)
アジアパシフィック (東京) (ap-northeast-1)
欧州 (アイルランド) (eu-west-1)
欧州 (ストックホルム) (eu-north-1)
プレビュークラスターの設定の詳細については、「Amazon Redshift 管理ガイド」の「プレビュークラスターの作成」を参照してください。
ネストデータには以下の制限が適用されます。
-
array型またはmap型には他のarray型またはmap型を含めることができますが、ネスト化されたarraysまたはmapsのクエリでscalar値が返されないことが前提です (プレビュー)。 -
Amazon Redshift Spectrum では、外部テーブルとしてのみ複合データ型がサポートされています。
-
サブクエリの結果列は、最上位である必要があります (プレビュー)。
-
OUTER JOIN式によって、ネスト化されたテーブルが参照される場合は、テーブルとそのネスト化された配列 (およびマップ) でのみ参照されます。OUTER JOIN式でネスト化されたテーブルを参照しない場合は、任意の数のネスト化されていないテーブルを参照することができます。 -
サブクエリの
FROM句でネスト化されたテーブルが参照されている場合は、その他のテーブルを参照することはできません。 -
サブクエリが、親テーブルを参照するネスト化されたテーブルに依存する場合、親テーブルは
FROM句でのみ使用できます。SELECT句やWHERE句など、他の句で親を使用することはできません。例えば、次のクエリは、サブクエリのSELECT句で親テーブルcを参照しているため、実行されません。SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(c.id) FROM c.phones p WHERE p LIKE '858%') > 1;次のクエリは、親である
cは、サブクエリのFROM句でのみ使用されるため、問題なく動作します。SELECT c.name.given FROM spectrum.customers c WHERE (SELECT COUNT(*) FROM c.phones p WHERE p LIKE '858%') > 1; -
FROM句以外の場所にあるネストされたデータにアクセスするサブクエリは、単一の値を返す必要があります。唯一の例外は、(NOT) EXISTS句のWHERE演算子です。 -
(NOT) INはサポートされていません。 -
ネストされたすべてのタイプの最大ネスト深度は 100 です。この制限は、すべてのファイル形式 (Parquet、ORC、Ion、JSON) に適用されます。
-
ネストデータにアクセスする集約サブクエリは、
arrays句のmapsおよびFROMのみを参照できます。外部テーブルは参照できません。 -
Redshift Spectrum テーブル内のネストされたデータの疑似列のクエリはサポートされていません。詳細については、「疑似列」を参照してください。
-
配列またはマップの列を
FROM句で指定してデータを抽出する場合、それらの列から、scalarである値のみを選択できます。例えば、以下のクエリは両方とも、配列内の要素をSELECTしようとしています。arr.aを選択するクエリは、arr.aがscalar値であるため機能します。2 番目のクエリは、arrayがFROM句でs3.nested tableから抽出された配列であるため、機能しません (プレビュー)。SELECT array_column FROM s3.nested_table;array_column ----------------- [{"a":1},{"b":2}]SELECT arr.a FROM s3.nested_table t, t.array_column arr;arr.a ----- 1--This query fails to run. SELECT array FROM s3.nested_table tab, tab.array_column array;別の配列やマップから抽出された配列またはマップは、
FROMでは使用できません。他の配列の中にネストされている配列やその他の複雑な構造体を選択するには、SELECTステートメントでインデックスを使用することを検討してください。