Skip to main content
インジェスト処理を中断することなく、ALTER TABLE ... MODIFY QUERY ステートメントを使用して、materialized view の作成時に指定した SELECT クエリを変更できます。 このコマンドは、TO [db.]name 句を指定して作成された materialized view を変更するためのものです。基盤となるストレージテーブルの構造は変更されず、materialized view のカラム定義も変更されません。そのため、TO [db.]name 句なしで作成された materialized view に対しては、このコマンドの適用範囲は非常に限定的です。 TO テーブルを使った例
TO テーブルを使わない例 新しいカラムを追加できず、変更できるのは SELECT セクションだけなので、このアプリケーションには大きな制約があります。

必要な権限

ALTER TABLE ... MODIFY QUERY を実行するには、ビューに対する ALTER VIEW MODIFY QUERY 権限が必要です。新しいクエリはビューの SQL security に従って実行されるため、このステートメントには、その SQL security でビューを作成する際に必要な権限も必要です。
  • 現在のユーザー以外の definer を指定した SQL SECURITY DEFINER:その definer に対する SET DEFINER
  • SQL SECURITY NONE:ALLOW SQL SECURITY NONE
同じステートメント内で MODIFY SQL SECURITY を使って SQL security も変更する場合は、変更前ではなく変更後の SQL security に対応するこれらの権限が必要です。 ON CLUSTER を指定した場合、権限チェックはステートメントを実行するホスト上で行われるため、そのホストにビューが存在している必要があります。存在しない場合、ステートメントは UNKNOWN_TABLE エラーで失敗します。

ALTER TABLE … MODIFY REFRESH ステートメント

ALTER TABLE ... MODIFY REFRESH は、スケジュール、依存関係、ランダム化、リフレッシュ設定 など、リフレッシャブルmaterialized view のリフレッシュパラメータを変更します。
スケジュール (EVERY または AFTER) の指定は必須です。このステートメントでは、すべてのリフレッシュパラメータが一度に置き換えられます。RANDOMIZE FOR、DEPENDS ON、SETTINGS のいずれであっても、指定されなかった句は削除されるか、既定値にリセットされます。リフレッシュ設定のみを変更する場合は、現在のスケジュールも再度指定してください。 このコマンドは、materialized view やそのターゲットテーブルを再作成したり、既存のターゲットデータを消去したり、すでに実行中のリフレッシュをキャンセルしたりすることなく、既存のビューのリフレッシュ構成をその場で更新します。構成の変更中も、既存のターゲットテーブルに対する読み取りは継続します。 同じ完全な REFRESH 指定でコマンドを繰り返し実行しても安全です。上記のとおり、実行するたびにすべてのリフレッシュパラメータが置き換えられるため、構成を維持する必要があるすべての句を必ず繰り返し指定してください。
制限事項:
  • ALTER TABLE ... MODIFY SETTING は materialized view ではサポートされていません。リフレッシュ設定は MODIFY REFRESH でのみ変更できます。
  • APPEND の追加または削除はサポートされていません。
  • all_replicas リフレッシュ設定は、ビューの作成後は変更できません。
リフレッシュ設定の一覧は、リフレッシュ設定 に記載されています。現在適用されている設定を含むリフレッシュの状態は、system.view_refreshes で確認できます。