

 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/)を参照してください。

# Amazon Redshift での Apache Iceberg テーブルの使用
<a name="querying-iceberg"></a>

**注記**  
 Amazon Redshift で Apache Iceberg テーブルを使用する場合に最高のパフォーマンスを実現するには、AWS Glue を使用してテーブルの列統計を生成する必要があります。詳細については、「*AWS Glue デベロッパーガイド*」の「[Iceberg テーブルの列統計の生成](https://docs.aws.amazon.com/glue/latest/dg/iceberg-generate-column-stats.html)」を参照してください。

このトピックでは、Redshift Spectrum または Redshift Serverless で Apache Iceberg 形式のテーブルを使用する方法について説明します。Apache Iceberg は、巨大な分析テーブル用の高パフォーマンス形式です。

Redshift Spectrum または Redshift Serverless を使用して、AWS Glue Data Catalogでカタログ化されている Apache Iceberg テーブルにクエリを実行できます。Apache Iceberg は、データレイク用のオープンソースのテーブル形式です。詳細については、Apache Iceberg ドキュメントで「[Apache Iceberg](https://iceberg.apache.org/)」を参照してください。

Amazon Redshift では、Apache Iceberg テーブルに対してクエリを実行する際に、トランザクションの一貫性を保ちます。Amazon Redshift を使用してクエリを実行しながら、Amazon Athena や Amazon EMR などの ACID (原子性、一貫性、分離性、持続性) 準拠のサービスを通じてテーブル内のデータを操作できます。Amazon Redshift では、Apache Iceberg メタデータに保存されているテーブル統計を使用してクエリプランを最適化し、クエリ処理中のファイルスキャンを減らすことができます。Amazon Redshift SQL を使用すると、Redshift テーブルをデータレイクテーブルと結合できます。

Amazon Redshift で Iceberg テーブルの使用を開始するには

1. Amazon Athena や Amazon EMR などの互換性のあるサービスを使用して AWS Glue Data Catalogのデータベースに Apache Iceberg テーブルを作成します。Athena を使用して Iceberg テーブルを作成するには、「Amazon Athena ユーザーガイド」の「[Apache Iceberg テーブルの使用](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html)」を参照してください。**

1. Amazon Redshift クラスターまたは Redshift Serverless ワークグループを作成し、データレイクへのアクセスを許可する IAM ロールを関連付けます。クラスターやワークグループの作成方法については、「*Amazon Redshift 入門ガイド*」の「[Amazon Redshift でプロビジョニングされたデータウェアハウス](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html)」と「[Amazon Redshift Serverless データウェアハウスの使用を開始](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html)」を参照してください。

1. クエリエディタ v2 またはサードパーティの SQL クライアントを使用して、クラスターまたはワークグループに接続します。クエリエディタ v2 を使用して接続する方法については、「Amazon Redshift 管理ガイド」の「[SQL クライアントツールを使用して Amazon Redshift データウェアハウスに接続する](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-to-cluster.html)」を参照してください。**

1. Iceberg テーブルを含む特定のデータカタログデータベース用の外部スキーマを Amazon Redshift データベースに作成します。外部スキーマの作成の詳細については、「[Amazon Redshift Spectrum 用の外部スキーマ](c-spectrum-external-schemas.md)」を参照してください。

1. SQL クエリを実行して、作成した外部スキーマ内の Iceberg テーブルにアクセスします。

## Amazon Redshift で Apache Iceberg テーブルを使用する際の考慮事項
<a name="querying-iceberg-considerations"></a>

Amazon Redshift で Iceberg テーブルを使用する場合は、以下の点を考慮してください。
+ **Iceberg バージョンのサポート** — Amazon Redshift は、以下のバージョンの Iceberg テーブルに対するクエリの実行をサポートしています。
  + バージョン 1 は、イミュータブルなデータファイルを使用して、大規模な分析テーブルをどのように管理するかを定義します。
  + バージョン 2 は、行レベルの更新と削除をサポートするとともに、既存のデータファイルを変更せずに維持し、削除ファイルを使用してテーブルデータの変更を処理する機能を追加します。

   バージョン 1 とバージョン 2 のテーブルの違いについては、Apache Iceberg ドキュメントで「[フォーマットバージョンの変更](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)」を参照してください。
+ **パーティションの追加** — Apache Iceberg テーブルにパーティションを手動で追加する必要はありません。Apache Iceberg テーブルの新しいパーティションは Amazon Redshift によって自動的に検出されるため、テーブル定義のパーティションを更新するための手動操作は必要ありません。パーティション仕様の変更も、ユーザーの介入なしにクエリに自動的に適用されます。
+ **Amazon Redshift への Iceberg データのインジェスト** — INSERT INTO コマンドまたは CREATE TABLE AS コマンドを使用して、Iceberg テーブルからローカルの Amazon Redshift テーブルにデータをインポートできます。現在、COPY コマンドを使用して Apache Iceberg テーブルの内容をローカルの Amazon Redshift テーブルにインジェストすることはできません。
+ **マテリアライズドビュー** — Amazon Redshift の他の外部テーブルと同じように、Apache Iceberg テーブルでマテリアライズドビューを作成できます。他のデータレイクテーブル形式の場合と同じ考慮事項が Apache Iceberg テーブルにも当てはまります。データレイクテーブルの自動クエリ書き換え、自動マテリアライズドビューは現在サポートされていません。
+ **AWS Lake Formation のきめ細かなアクセス制御** — Amazon Redshift は、Apache Iceberg テーブルに対する AWS Lake Formation のきめ細かなアクセス制御をサポートしています。
+ **ユーザー定義のデータ処理パラメータ** — Amazon Redshift は、Apache Iceberg テーブルに対するユーザー定義のデータ処理パラメータをサポートしています。既存のファイルに対するユーザー定義のデータ処理パラメータを使用して、外部テーブルでクエリされるデータを調整し、スキャンエラーを回避します。これらのパラメータは、テーブルスキーマとファイル内の実際のデータとの不一致を処理する機能を提供します。Apache Iceberg テーブルに対してもユーザー定義のデータ処理パラメータを使用できます。
+ **タイムトラベルクエリ** — タイムトラベルクエリは現在、Apache Iceberg テーブルに対してサポートされていません。
+ **料金** — クラスターから Iceberg テーブルにアクセスすると、Redshift Spectrum の料金が請求されます。ワークグループから Iceberg テーブルにアクセスすると、Redshift Serverless の料金が請求されます。Redshift Spectrum と Redshift Serverless の料金の詳細については、「[Amazon Redshift の料金](https://aws.amazon.com/redshift/pricing/)」を参照してください。
+ **メタデータキャッシュ** – メタデータキャッシュは、[Iceberg 仕様](https://iceberg.apache.org/spec/#file-system-operations)に基づき、メタデータファイルが変更不可能であることを前提としています。メタデータファイルのイミュータビリティは、Amazon Redshift のデータ整合性の要件です。
+ **フェデレーティッド ID** – Apache Iceberg テーブルに書き込む場合、フェデレーティッド ID はサポートされていません。これには、外部スキーマの作成時に IAM\_ROLE パラメータに SESSION キーワードを使用することが含まれます。IAM\_ROLE パラメータの詳細については、「[CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)」を参照してください。