

 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="cross-database-overview"></a>

このトピックでは、単一の Amazon Redshift クラスターにある複数の Amazon Redshift データベースで動作するクエリである、*クロスデータベースクエリ*について説明します。

Amazon Redshift でクロスデータベースクエリを使用して、Amazon Redshift クラスター内の複数のデータベースをまたいでクエリと書き込みを行うことができます。クロスデータベースクエリを使用すると、Amazon Redshift クラスター内のどのデータベースからでも、実際に接続しているデータベースに関係なく、データをクエリし、書き込むことができます。クロスデータベースクエリでは、データコピーを排除し、データ組織を簡素化して、同じデータウェアハウスからの複数のビジネスグループをサポートします。

クロスデータベースクエリでは、次のことができます。
+ **Amazon Redshift クラスター内のデータベース間でデータをクエリします**。

  接続しているデータベースからクエリを実行できるだけでなく、許可のある他のデータベースから読み込むこともできます。

  接続されていない他のデータベースでデータベースオブジェクトにクエリを実行すると、それらのデータベースオブジェクトへの読み込みアクセスのみが付与されます。クロスデータベースクエリを使用すると、特定のデータベースに接続しなくても、Amazon Redshift クラスター上の任意のデータベースのデータにアクセスできます。これにより、Amazon Redshift クラスター内の複数のデータベースに分散しているデータをすばやく簡単にクエリして結合することができます。

  また、複数のデータベースのデータセットを 1 つのクエリで結合し、ビジネスインテリジェンス (BI) または分析ツールを使用してデータを分析することもできます。ユーザーに対する読み取りアクセス制御は引き続きテーブルレベルで細かく設定でき、それには標準の Amazon Redshift SQL コマンドを使用します。これにより、ユーザーが、許可を持つデータの関連するサブセットのみを表示できるようにすることができます。
+ **Amazon Redshift クラスター内の複数のデータベース間でデータを書き込みます**。

  実際に接続しているデータベースから書き込めるのはもちろん、アクセスを許可されていれば、他の任意のデータベースから書き込むこともできます。

  接続していない他のデータベースのデータベースオブジェクトに対して書き込みアクセスを許可されている場合は、クロスデータベースクエリを使用して、Amazon Redshift クラスター上の任意のデータベースからデータを書き込むことができます。その特定のデータベースに接続する必要はありません。このおかげで、複雑な書き込み操作がはかどり、Amazon Redshift クラスター内の複数のデータベースに分散しているデータをすばやく簡単に結合できます。

  また、複数のデータベースからのデータセットを 1 つのクエリにまとめ、異なる抽出、変換、ロード (ETL) ツールや分析ツールを使用してそのデータを書き込むこともできます。ユーザーに対する書き込みアクセス制御は引き続きテーブルレベルで細かく設定でき、それには標準の Amazon Redshift SQL コマンドを使用します。そのため、ユーザーには、各自がアクセスを許可されているデータの関連サブセットのみが表示されます。
+ **オブジェクトをクエリします**。

  3 つの部分で表記される完全修飾オブジェクト名を使用して、他のデータベースオブジェクトをクエリできます。任意のデータベースオブジェクトへのフルパスは、データベース名、スキーマ、オブジェクト名の 3 つのコンポーネントで構成されます。フルパス表記 (`database_name.schema_name.object_name`) を使用して、他のデータベースから任意のオブジェクトにアクセスできます。特定の列にアクセスするには、`database_name.schema_name.object_name.column_name` を使用します。

  外部スキーマ表記を使用して、別のデータベースのスキーマのエイリアスを作成することもできます。この外部スキーマは、別のデータベースとスキーマのペアを参照します。クエリは、外部スキーマ表記 (`external_schema_name.object_name`) を使用して他のデータベースオブジェクトにアクセスできます。

  同じ読み込み専用クエリでは、他のデータベースのユーザーテーブル、通常のビュー、マテリアライズドビュー、遅延バインディングビューなど、さまざまなデータベースオブジェクトをクエリできます。
+ **許可を管理します**。

  Amazon Redshift クラスター内の任意のデータベースにあるオブジェクトへのアクセス権限を持つユーザーは、それらのオブジェクトをクエリし、データを書き込むことができます。[GRANT](r_GRANT.md) コマンドを使用して、ユーザーおよびユーザーグループに権限を付与します。また、ユーザーが特定のデータベースオブジェクトへのアクセスを必要としなくなったときに [REVOKE](r_REVOKE.md) コマンドを使用して権限を取り消すこともできます。
+ **メタデータと BI ツールを操作します。**

  外部スキーマを作成して、同じ Amazon Redshift クラスター内の別の Amazon Redshift データベースのスキーマを参照できます。詳細については、[CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md) を参照してください。

  外部スキーマ参照が作成されると、Amazon Redshift はメタデータを探索するためのツールについて、[SVV\$1EXTERNAL\$1TABLES](r_SVV_EXTERNAL_TABLES.md) および [SVV\$1EXTERNAL\$1COLUMNS](r_SVV_EXTERNAL_COLUMNS.md) の他のデータベースのスキーマの下にテーブルを表示します。

  クロスデータベースクエリを BI ツールと統合するには、次のシステムビューを使用できます。これらは、Amazon Redshift クラスター上の接続データベースや他のデータベースにあるオブジェクトのメタデータに関する情報を表示することができます。

  以下は、Amazon Redshift クラスターにあるすべてのデータベースのすべての Amazon Redshift オブジェクトと外部オブジェクトを表示するシステムビューです。
  + [SVV\$1ALL\$1COLUMNS](r_SVV_ALL_COLUMNS.md)
  + [SVV\$1ALL\$1SCHEMAS](r_SVV_ALL_SCHEMAS.md)
  + [SVV\$1ALL\$1TABLES](r_SVV_ALL_TABLES.md)

  以下は、Amazon Redshift クラスターにあるすべてのデータベースのすべての Amazon Redshift オブジェクトを表示するシステムビューです。
  + [SVV\$1REDSHIFT\$1COLUMNS](r_SVV_REDSHIFT_COLUMNS.md)
  + [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md)
  + [SVV\$1REDSHIFT\$1FUNCTIONS](r_SVV_REDSHIFT_FUNCTIONS.md)
  + [SVV\$1REDSHIFT\$1SCHEMAS](r_SVV_REDSHIFT_SCHEMAS.md)
  + [SVV\$1REDSHIFT\$1TABLES](r_SVV_REDSHIFT_TABLES.md)

**Topics**
+ [考慮事項](cross-database_usage.md)
+ [制限事項](cross-database_limitation.md)
+ [クロスデータベースクエリの例](cross-database_example.md)
+ [クエリエディタでのクロスデータベースクエリの使用](cross-database_console.md)