

 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="t_creating_schema"></a>

新しいデータベースを作成した後は、そのデータベースに新しいスキーマを作成できます。*スキーマ*とは、テーブル、ビュー、およびユーザー定義関数 (UDF) など、名前が付けられたデータベースオブジェクトが含まれる名前空間です。データベースには 1 つまたは複数のスキーマを含めることができ、各スキーマは 1 つのデータベースにのみ属します。2 つのスキーマが、同じ名前を共有する異なるオブジェクトを持つことができます。

同じデータベース内に複数のスキーマを作成して、好みの方法でデータを整理したり、データを機能的にグループ化したりできます。例えば、すべてのステージングデータを格納するスキーマや、すべてのレポートテーブルを保存する別のスキーマを作成できます。また、同じデータベースにある異なるビジネスグループに関連するデータを保存するために、別々のスキーマを作成することもできます。スキーマごとに、テーブル、ビュー、ユーザー定義関数 (UDF) など、異なるデータベースオブジェクトを格納できます。さらに、AUTHORIZATION 句を使用してスキーマを作成することもできます。この句では、特定のユーザーに所有権を与えることや、指定したスキーマが使用できる最大ディスク領域を指定するクオータを設定することなどが可能です。

Amazon Redshift は、新しいデータベースごとに、`public` という名前のスキーマを自動的に作成します。データベースオブジェクトの作成中にスキーマ名を指定しない場合、そのオブジェクトは `public` スキーマに入ります。

スキーマ内のオブジェクトにアクセスするには、`schema_name.table_name` 表記を使用してオブジェクト修飾します。スキーマの修飾名は、ドットで区切られたスキーマ名とテーブル名で構成されます。例えば、`price` テーブルを持つ `sales` スキーマや、`price` テーブルを持つ `inventory` スキーマのようになります。`price` テーブルを参照する際には、その名前を `sales.price` または `inventory.price` のように修飾する必要があります。

次の例では、`GUEST` ユーザーのために、**SALES** という名前のスキーマを作成します。

```
CREATE SCHEMA SALES AUTHORIZATION GUEST;
```

その他のコマンドオプションについては、*Amazon Redshift データベース開発者ガイド*の「[CREATE SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_SCHEMA.html)」を参照してください。

データベース内のスキーマのリストを表示するには、次のコマンドを実行します。

```
select * from pg_namespace;
```

出力は以下の例のようになります。

```
  nspname             | nspowner |         nspacl
----------------------+----------+--------------------------
  sales               |  100     |
  pg_toast            |   1      |
  pg_internal         |   1      |
  catalog_history     |   1      |
  pg_temp_1           |   1      | 
  pg_catalog          |   1      | {rdsdb=UC/rdsdb,=U/rdsdb}
  public              |   1      | {rdsdb=UC/rdsdb,=U/rdsdb}
  information_schema  |   1      | {rdsdb=UC/rdsdb,=U/rdsdb}
```

カタログテーブルに対するクエリの方法については、*Amazon Redshift データベース開発者ガイド*の「[カタログテーブルへのクエリの実行](https://docs.aws.amazon.com/redshift/latest/dg/c_join_PG.html)」を参照してください。

スキーマへのアクセス許可をユーザーに付与するには、GRANT ステートメントを使用します。

次の例では、SELECT ステートメントを使用して `SALES` スキーマ内のすべてのテーブルやビューからデータを選択する権限を `GUEST` ユーザーに付与します。

```
GRANT SELECT ON ALL TABLES IN SCHEMA SALES TO GUEST;
```

次の例では、すべての使用可能な権限を一度に `GUEST` ユーザーに付与します。

```
GRANT ALL ON SCHEMA SALES TO GUEST;
```