

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

# REFRESH MATERIALIZED VIEW
<a name="materialized-view-refresh-sql-command"></a>

マテリアライズドビューの更新

マテリアライズドビューを作成する際、そのコンテンツには、その時点での基となるデータベーステーブルまたはテーブルの状態が反映されます。アプリケーションが基となるテーブルにあるデータを変更しても、マテリアライズドビューのデータは変更されません。

マテリアライズドビューのデータは、`REFRESH MATERIALIZED VIEW` ステートメントを使用して随時更新できます。このステートメントを使用する際は、Amazon Redshift は、ベーステーブルまたはテーブルで行われた変更を特定し、特定した変更をマテリアライズドビューに適用します。

マテリアライズドビューの詳細については、「[Amazon Redshift でのマテリアライズドビュー](materialized-view-overview.md)」を参照してください。

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

```
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
```

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

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

RESTRICT  
オプションキーワード 指定されたマテリアライズドビューを更新しますが、依存するマテリアライズドビューは更新しません。RESTRICT も CASCADE も指定しない場合のデフォルト。

CASCADE  
オプションキーワード 指定したマテリアライズドビューとそのすべての依存マテリアライズドビューを更新します。

## 使用に関する注意事項
<a name="mv_REFRESH_MARTERIALIZED_VIEW_usage"></a>

マテリアライズドビューの所有者のみが、そのマテリアライズドビューに対して `REFRESH MATERIALIZED VIEW` のオペレーションを実行できます。さらに、`REFRESH MATERIALIZED VIEW`を正常に実行するには、所有者が基となるベーステーブルに対する SELECT 権限を持っている必要があります。

`REFRESH MATERIALIZED VIEW` コマンドは、独自のトランザクションとして実行されます。Amazon Redshift トランザクションのセマンティクスに従って、ベーステーブルの、どのデータが `REFRESH` コマンドに表示されるか、または `REFRESH` コマンドによって加えられた変更が Amazon Redshift で実行中の他のトランザクションにいつ表示されるかを判断します。
+ 増分マテリアライズドビューの場合、`REFRESH MATERIALIZED VIEW`はコミット済みのベーステーブル行のみを使用します。したがって、同じトランザクション内のデータ操作言語 (DML) ステートメントの後に更新操作が実行された場合、その DML ステートメントの変更は更新のために表示されません。
+ マテリアライズドビューの完全更新の場合、`REFRESH MATERIALIZED VIEW`は、通常の Amazon Redshift トランザクションセマンティクスに従って、更新トランザクションに表示されるすべてのベーステーブル行を表示します。
+ 入力引数型よっては、マテリアライズドビューの増分リフレッシュが Amazon Redshift でサポートされています。特定の入力引数型を持つ次の関数です。DATE (タイムスタンプ)、DATE\$1PART (日付、時刻、間隔、time-tz)、DATE\$1TRUNC (タイムスタンプ、間隔)。
+ 増分更新は、ベーステーブルがデータ共有内にあるマテリアライズドビューでサポートされます。
+ リモートデータ共有クラスターからの共有マテリアライズドビューの更新は、他のマテリアライズドビュー、Spectrum テーブル、異なる Redshift クラスターまたは UDF で定義されたテーブルのリファレンスを含むマテリアライズドビューではサポートされていません。このようなマテリアライズドビューは、ローカル (プロデューサー) クラスターから更新できます。

Amazon Redshift の一部のオペレーションは、マテリアライズドビューに影響します。こうしたオペレーションの中には、マテリアライズドビューを定義するクエリで増分更新のための SQL 機能のみが使用されている場合でも、`REFRESH MATERIALIZED VIEW`オペレーションによってマテリアライズドビューが完全に再計算されるものがあります。次に例を示します。
+ マテリアライズドビューが更新されない場合、バックグラウンドでのバキューム操作がブロックされることがあります。内部でしきい値の期間を定義したら、バキュームの実行が許可されます。バキュームを操作すると、依存するマテリアライズドビューは、次の更新時に (増分更新であっても) 再計算する対象としてマークされます。VACUUM の詳細については、「[VACUUM](r_VACUUM_command.md)」を参照してください。イベントとステータス変更の詳細については、「[STL\$1MV\$1STATE](r_STL_MV_STATE.md)」を参照してください。
+ ベーステーブルで実行されるユーザー操作には、次に REFRESH が実行された際に、マテリアライズドビューが完全に再計算されるように強制するものがあります。このような操作の例としては、手動で呼び出された VACUUM、従来のサイズ変更、ALTER DISTKEY 操作、ALTER SORTKEY 操作、および切り捨て操作があります。自動オペレーションでは、次に REFRESH オペレーションが実行されたときにマテリアライズドビューが完全に再計算されることもあります。例えば、auto-vacuum delete オペレーションでは、完全な再計算が発生する可能性があります。イベントとステータス変更の詳細については、「[STL\$1MV\$1STATE](r_STL_MV_STATE.md)」を参照してください。

## カスケード更新
<a name="mv_REFRESH_MATERIALIZED_VIEW_cascading"></a>

CASCADE オプションは、指定したマテリアライズドビューとそのすべての依存マテリアライズドビューを依存関係の順に更新します。ベースの MV からトップの MV へと (トポロジ順) に更新します。これにより、一連のネストされたマテリアライズドビューを 1 つのコマンドで更新できます。

RESTRICT オプション (RESTRICT も CASCADE も指定しない場合のデフォルト) は、指定したマテリアライズドビューのみを更新します。

CASCADE を使用すると、以下のルールが適用されます。
+ マテリアライズドビューの所有者またはスーパーユーザーのみが `REFRESH MATERIALIZED VIEW ... CASCADE` コマンドを実行できます。
+ カスケード内のマテリアライズドビューのいずれかを更新できない場合、カスケードオペレーション全体が停止します。

カスケード更新機能は、ローカルおよびストリーミングマテリアライズドビューの上にネストされた MV でのみサポートされます。Spectrum やデータ共有などの他のソースタイプを持つマテリアライズドビューは、カスケードモードではサポートされません。CASCADE は、すべてネストされた MV に対して 1 つのトランザクションで更新を実行します。

## データ共有内のマテリアライズドビューの増分更新
<a name="mv_REFRESH_MATERIALIZED_VIEW_datashare"></a>

 Amazon Redshift は、ベーステーブルを共有している場合、コンシューマーデータ共有でのマテリアライズドビューの自動更新と増分更新をサポートしています。増分更新は、Amazon Redshift が前回の更新後に発生したベーステーブルの変更を特定し、マテリアライズドビューの対応するレコードのみを更新する操作です。この動作の詳細については、「[CREATE MATERIALIZED VIEW](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html#mv_CREATE_MARTERIALIZED_VIEW_datashare)」を参照してください。

## 増分更新の制約事項
<a name="mv_REFRESH_MARTERIALIZED_VIEW_limitations"></a>

Amazon Redshift では、現在のところ、次の SQL 要素のいずれかを使用してクエリで定義されたマテリアライズドビューの増分更新はサポートされていません。
+ OUTER JOIN (右、左、またはフル)。
+ 集合演算: UNION、INTERSECT、EXCEPT、MINUS。
+ サブクエリと集計関数で発生するか、または GROUP BY 句がクエリに存在する場合、またはターゲットのマテリアライズドビューにソートキーが含まれる場合は、UNION ALL。
+ 集計関数は、MEDIAN、PERCENTILE\$1CONT、LISTAGG、STDDEV\$1SAMP、STDDEV\$1POP、APPROXIMATE COUNT、APPROXIMATE PERCENTILE、およびビット単位の集計関数です。
**注記**  
COUNT、SUM、MIN、MAX、および AVG 集計関数がサポートされています。
+ DISTINCT COUNT、DISTINCT SUM などの DISTINCT 集計関数。
+ ウィンドウ関数。
+ 共通部分式の最適化など、クエリの最適化に一時テーブルを使用するクエリ。
+ サブクエリ
+ マテリアライズドビューを定義するクエリで以下の形式を参照する外部テーブル。
  +  Delta Lake 
  +  Hudi 

  上記以外のフォーマットを使用して定義されたマテリアライズドビューでは、増分更新がサポートされます。詳細については、「[Amazon Redshift Spectrum の外部データレイクテーブルのマテリアライズドビュー外部データレイクテーブルのマテリアライズドビュー](materialized-view-external-table.md)」を参照してください。
+ 日時関数、RANDOM、STABLE 以外のユーザー定義関数など、可変関数。
+ ゼロ ETL 統合の増分更新に関する制限については、「[Amazon Redshift とのゼロ ETL 統合を使用する場合の考慮事項](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl.reqs-lims.html)」を参照してください。
+ 複数のデータベースからのテーブルへのアクセス。

VACUUM などのバックグラウンド操作がマテリアライズドビューの更新オペレーションに与える影響など、マテリアライズドビューの制限の詳細については、[使用に関する注意事項](#mv_REFRESH_MARTERIALIZED_VIEW_usage) を参照してください。

## 例
<a name="mv_REFRESH_MARTERIALIZED_VIEW_examples"></a>

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

```
REFRESH MATERIALIZED VIEW tickets_mv;
```

次の例では、`products_mv` マテリアライズドビューとそのすべての依存マテリアライズドビューを更新します。

```
REFRESH MATERIALIZED VIEW products_mv CASCADE; 
```