

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

# ALTER MATERIALIZED VIEW
<a name="r_ALTER_MATERIALIZED_VIEW"></a>

マテリアライズドビューの属性を変更します。

## 構文
<a name="r_ALTER_MATERIALIZED_VIEW-synopsis"></a>

```
ALTER MATERIALIZED VIEW mv_name
{
AUTO REFRESH { YES | NO } 
| ALTER DISTKEY column_name
| ALTER DISTSTYLE ALL
| ALTER DISTSTYLE EVEN
| ALTER DISTSTYLE KEY DISTKEY column_name
| ALTER DISTSTYLE AUTO
| ALTER [COMPOUND] SORTKEY ( column_name [,...] )
| ALTER SORTKEY AUTO
| ALTER SORTKEY NONE
| ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [FOR DATASHARES]
};
```

## パラメータ
<a name="r_ALTER_MATERIALIZED_VIEW-parameters"></a>

*mv\$1name*  
変更するマテリアライズドビューの名前。

AUTO REFRESH \$1 YES \$1 NO \$1  
マテリアライズドビューの自動更新をオンまたはオフにする句。マテリアライズドビューの自動更新の詳細については、「[マテリアライズドビューの更新](materialized-view-refresh.md)」を参照してください。

ALTER DISTSTYLE ALL  
リレーションの既存の分散スタイルを `ALL` に変更する句。以下の点を考慮してください。  
+ ALTER DISTSTYLE、ALTER SORTKEY、および VACUUM を同じリレーションに対して同時に実行することはできません。
  + VACUUM を実行中に、ALTER DISTSTYLE ALL を実行すると、エラーが返されます。
  + ALTER DISTSTYLE ALL が実行されている場合は、リレーションに対するバックグラウンドの VACUUM は開始しません。
+ ALTER DISTSTYLE ALL コマンドは、インターリーブソートキーを持つリレーションおよび一時テーブルではサポートされていません。
+ 分散スタイルが以前に AUTO として定義されていた場合、そのリレーションは自動テーブル最適化の候補ではなくなります。
DISTSTYLE ALL の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。

ALTER DISTSTYLE EVEN  
リレーションの既存の分散スタイルを `EVEN` に変更する句。以下の点を考慮してください。  
+ ALTER DISTSYTLE、ALTER SORTKEY、および VACUUM を同じリレーションに対して同時に実行することはできません。
  + VACUUM を実行中である場合、ALTER DISTSTYLE EVEN を実行すると、エラーが返されます。
  + ALTER DISTSTYLE EVEN が実行されている場合は、リレーションに対するバックグラウンドの VACUUM は開始しません。
+ ALTER DISTSTYLE EVEN コマンドは、インターリーブソートキーを持つリレーションおよび一時テーブルではサポートされていません。
+ 分散スタイルが以前に AUTO として定義されていた場合、そのリレーションは自動テーブル最適化の候補ではなくなります。
DISTSTYLE EVEN の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。

ALTER DISTKEY *column\$1name* または ALTER DISTSTYLE KEY DISTKEY *column\$1name*  
リレーションの分散キーとして使用される列を変更する句。以下の点を考慮してください。  
+ 同じリレーションに対して、VACUUM と ALTER DISTKEY を同時に実行することはできません。
  + VACUUM がすでに実行されている場合は、ALTER DISTKEY よりエラーが返ります。
  + ALTER DISTKEY が実行されている場合は、リレーションに対するバックグラウンドの VACUUM は開始しません。
  + ALTER DISTKEY が実行されている場合は、フォアグラウンドバキュームよりエラーが返ります。
+ ALTER DISTKEY コマンドは、1 つのリレーションに対して一度に 1 回のみ実行できます。
+ ALTER DISTKEY コマンドは、インターリーブソートキーを持つリレーションではサポートされていません。
+ 分散スタイルが以前に AUTO として定義されていた場合、そのリレーションは自動テーブル最適化の候補ではなくなります。
DISTSTYLE KEY を指定する場合、データは、DISTKEY 列の値で分散されます。DISTSTYLE の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。

ALTER DISTSTYLE AUTO  
リレーションの既存の分散スタイルを AUTO に変更する句。  
分散スタイルを AUTO に変更すると、リレーションの分散スタイルは次のように設定されます。  
+ DISTSTYLE ALL の小さなリレーションは、AUTO(ALL) に変換されます。
+ DISTSTYLE EVEN の小さなリレーションは、AUTO(ALL) に変換されます。
+ DISTSTYLE KEY の小さなリレーションは、AUTO(ALL) に変換されます。
+ DISTSTYLE ALL の大きなリレーションは、AUTO(EVEN) に変換されます。
+ DISTSTYLE EVEN の大きなリレーションは、AUTO(EVEN) に変換されます。
+ DISTSTYLE KEY の大きなリレーションは AUTO(KEY) に変換され、DISTKEY は保持されます。この場合、Amazon Redshift はリレーションに変更を加えません。
Amazon Redshift は、新しい分散スタイルまたはキーでクエリのパフォーマンスが向上すると判断した場合、リレーションの分散スタイルまたはキーを将来的に変更する可能性があります。例えば、DISTSTYLE が AUTO (KEY) のリレーションを AUTO(EVEN) に、またはその逆に変更する場合があります。分散キーが変更されたときの動作 (データの再分散やロックなど) の詳細については、「[Amazon Redshift Advisor のレコメンデーション](https://docs.aws.amazon.com/redshift/latest/dg/advisor-recommendations.html#alter-diststyle-distkey-recommendation)」を参照してください。  
DISTSTYLE AUTO の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。  
リレーションの分散スタイルを表示するには、SVV\$1TABLE\$1INFO システムカタログビューをクエリします。詳細については、「[SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md)」を参照してください。リレーションに対する Amazon Redshift Advisor のレコメンデーションを表示するには、SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS システムカタログビューをクエリします。詳細については、「[SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md)」を参照してください。Amazon Redshift が実行したアクションを表示するには、SVL\$1AUTO\$1WORKER\$1ACTION システムカタログビューにクエリを実行します。詳細については、「[SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md)」を参照してください。

ALTER [COMPOUND] SORTKEY ( *column\$1name* [,...] )  
リレーションで使用されるソートキーを変更または追加する句。ALTER SORTKEY は一時テーブルではサポートされていません。  
ソートキーを変更すると、新しいソートキーまたは元のソートキーの列の圧縮エンコードが変更される場合があります。リレーションに対してエンコードが明示的に定義されていない場合、Amazon Redshift は、次のように圧縮エンコードを自動的に割り当てます。  
+ ソートキーとして定義されている列には、RAW 圧縮が割り当てられます。
+ BOOLEAN、REAL、または DOUBLE PRECISION データ型として定義されている列には、RAW 圧縮が割り当てられます。
+ SMALLINT、INTEGER、BIGINT、DECIMAL、DATE、TIME、TIMETZ、TIMESTAMP、または TIMESTAMPTZ として定義された列には AZ64 圧縮が割り当てられます。
+ CHAR または VARCHAR として定義された列には、LZO 圧縮が割り当てられます。
以下の点を考慮してください。  
+ ソートキーには、リレーションあたり最大 400 列を定義できます。
+ インターリーブソートキーは、複合ソートキーに変更することが可能です。あるいは、ソートキーなしに変更することもできます。ただし、複合ソートキーをインターリーブソートキーに変更することはできません。
+ ソートキーが以前に AUTO として定義されていた場合、そのリレーションは自動テーブル最適化の候補ではなくなります。
+ Amazon Redshift では、ソートキーとして定義された列に RAW エンコード (圧縮なし) を使用することをお勧めします。列を変更してソートキーとして選択すると、列の圧縮が RAW 圧縮 (圧縮なし) に変更されます。これを受けて、リレーションに必要なストレージ量が増加する可能性があります。リレーションのサイズがどれだけ大きくなるかは、特定のリレーション定義とリレーションのコンテンツによって異なります。圧縮の詳細については、「[圧縮エンコード](c_Compression_encodings.md)」を参照してください。
データがリレーションにロードされる際、ソートキーの順序でロードされます。ソートキーが変更されると、Amazon Redshift によってデータの順序が変更されます。SORTKEY の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。

ALTER SORTKEY AUTO  
ターゲットリレーションのソートキーを AUTO に変更または追加する句。ALTER SORTKEY AUTO は一時テーブルではサポートされていません。  
ソートキーを AUTO に変更した場合は、そのリレーションの既存のソートキーが維持されます。  
Amazon Redshift は、新しいソートキーでクエリのパフォーマンスが向上すると判断した場合、リレーションのソートキーを将来的に変更する可能性があります。  
SORTKEY AUTO の詳細については、「[CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md)」を参照してください。  
リレーションのソートキーを表示するには、SVV\$1TABLE\$1INFO システムカタログビューをクエリします。詳細については、「[SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md)」を参照してください。リレーションに対する Amazon Redshift Advisor のレコメンデーションを表示するには、SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS システムカタログビューをクエリします。詳細については、「[SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md)」を参照してください。Amazon Redshift が実行したアクションを表示するには、SVL\$1AUTO\$1WORKER\$1ACTION システムカタログビューにクエリを実行します。詳細については、「[SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md)」を参照してください。

ALTER SORTKEY NONE  
ターゲットリレーションのソートキーを削除する句。  
ソートキーが以前に AUTO として定義されていた場合、そのリレーションは自動テーブル最適化の候補ではなくなります。

ROW LEVEL SECURITY \$1 ON \$1 OFF \$1 [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] [ FOR DATASHARES ]  
リレーションの行レベルのセキュリティをオンまたはオフにする句。  
リレーションで行レベルのセキュリティがオンになっている場合、行レベルのセキュリティポリシーでアクセスが許可されている行のみを読み取ることができます。リレーションへのアクセス権を付与するポリシーがない場合は、リレーションから行を表示できません。ROW LEVEL SECURITY 句を設定できるのは、スーパーユーザーと、`sys:secadmin` ロールを持つユーザーまたはロールのみです。詳細については、「[行レベルのセキュリティ](t_rls.md)」を参照してください。  
+ [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] 

  リレーションの行レベルのセキュリティポリシーの結合タイプを選択できる句。1 つのリレーションに複数の行レベルのセキュリティポリシーがアタッチされている場合、それらのポリシーを AND 句や OR 句で組み合わせることができます。デフォルトでは、Amazon Redshift は RLS ポリシーを AND 句で組み合わせます。スーパーユーザーと、`sys:secadmin` ロールを持つユーザーまたはロールは、この句を使用して、リレーションの行レベルのセキュリティポリシーの結合タイプを定義できます。詳細については、「[ユーザーごとに複数ポリシーの組み合わせ](t_rls_combine_policies.md)」を参照してください。
+ FOR DATASHARES

   RLS で保護されたリレーションにデータ共有上でアクセスできるかどうかを決定する句。デフォルトでは、RLS で保護されたリレーションにデータ共有経由でアクセスすることはできません。この句を指定して実行される ALTER MATERIALIZED VIEW ROW LEVEL SECURITY コマンドは、リレーションのデータ共有アクセシビリティプロパティにのみ影響します。ROW LEVEL SECURITY のプロパティは変更されません。

   RLS で保護されたリレーションにデータ共有上でアクセスできるようにした場合、コンシューマー側のデータ共有データベースにおいて、そのリレーションには行レベルのセキュリティが適用されません。リレーションはプロデューサー側の RLS プロパティを保持します。

## 例
<a name="r_ALTER_MATERIALIZED_VIEW-examples"></a>

次の例では、`tickets_mv` マテリアライズドビューを自動的に更新できます。

```
ALTER MATERIALIZED VIEW tickets_mv AUTO REFRESH YES
```

# ALTER MATERIALIZED VIEW の DISTSTYLE と SORTKEY の例
<a name="r_ALTER_MATERIALIZED_VIEW-DISTSTYLE-SORTKEY-examples"></a>

このトピックの例では、ALTER MATERIALIZED VIEW を使用して DISTSTYLE および SORTKEY の変更を実行する方法を示します。

次のクエリ例は、サンプルベーステーブルを使用して DISTSTYLE KEY DISTKEY 列を変更する方法を示しています。

```
CREATE TABLE base_inventory(
  inv_date_sk int4 NOT NULL,
  inv_item_sk int4 NOT NULL,
  inv_warehouse_sk int4 NOT NULL,
  inv_quantity_on_hand int4
);

INSERT INTO base_inventory VALUES(1,1,1,1);

CREATE materialized VIEW inventory diststyle even AS SELECT * FROM base_inventory;
SELECT "table", diststyle FROM svv_table_info WHERE "table" = 'inventory';

ALTER materialized VIEW inventory ALTER diststyle KEY distkey inv_warehouse_sk;
SELECT "table", diststyle FROM svv_table_info WHERE "table" = 'inventory';

ALTER materialized VIEW inventory ALTER distkey inv_item_sk;
SELECT "table", diststyle FROM svv_table_info WHERE "table" = 'inventory';

DROP TABLE base_inventory CASCADE;
```

マテリアライズドビューを DISTSTYLE ALL に変更します。

```
CREATE TABLE base_inventory(
  inv_date_sk int4 NOT NULL,
  inv_item_sk int4 NOT NULL,
  inv_warehouse_sk int4 NOT NULL,
  inv_quantity_on_hand int4
);

INSERT INTO base_inventory VALUES(1,1,1,1);

CREATE materialized VIEW inventory diststyle even AS SELECT * FROM base_inventory;
SELECT "table", diststyle FROM svv_table_info WHERE "table" = 'inventory';

ALTER MATERIALIZED VIEW inventory ALTER diststyle ALL;
SELECT "table", diststyle FROM svv_table_info WHERE "table" = 'inventory';

DROP TABLE base_inventory CASCADE;
```

次のコマンドは、サンプルベーステーブルを使用した ALTER MATERIALIZED VIEW SORTKEY の例を示しています。

```
CREATE TABLE base_inventory (c0 int, c1 int);

INSERT INTO base_inventory VALUES(1,1);

CREATE materialized VIEW inventory interleaved sortkey(c0, c1) AS SELECT * FROM base_inventory;
SELECT "table", sortkey1 FROM svv_table_info WHERE "table" = 'inventory';

ALTER materialized VIEW inventory ALTER sortkey(c0, c1);
SELECT "table", diststyle, sortkey_num FROM svv_table_info WHERE "table" = 'inventory';

ALTER materialized VIEW inventory ALTER sortkey NONE;
SELECT "table", diststyle, sortkey_num FROM svv_table_info WHERE "table" = 'inventory';

ALTER materialized VIEW inventory ALTER sortkey(c0);
SELECT "table", diststyle, sortkey_num FROM svv_table_info WHERE "table" = 'inventory';

DROP TABLE base_inventory CASCADE;
```