次の方法で共有


ALTER MATERIALIZED VIEW

適用対象: Databricks SQL

ビューに関連付けられたメタデータを変更します。

次のいずれかのアクションを実行できます。

  • 既存の具体化されたビューを更新するためのスケジュールを追加します。
  • 具体化されたビューの既存の更新スケジュールを変更します。
  • 具体化されたビューの更新スケジュールを削除します。 スケジュールが削除された場合、最新のデータを反映するには、オブジェクトを手動で更新する必要があります。

具体化されたビューにコメントを追加または変更するには、 COMMENT ONを使用します。

定義 SQL と矛盾する方法でパイプラインによって作成されたデータセットを変更すると、一部の変更が元に戻される可能性があります。 「Lakeflow Spark 宣言パイプラインでのALTERコマンドの使用」を参照してください。

構文

ALTER MATERIALIZED VIEW view_name
  {
    { ADD | ALTER } schedule |
    DROP SCHEDULE |
    ALTER COLUMN column_clause |
    SET ROW FILTER clause |
    DROP ROW FILTER |
    SET TAGS clause |
    UNSET TAGS clause }

  schedule
    { SCHEDULE [ REFRESH ] schedule_clause |
      TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ] }

  schedule_clause
    { EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
      CRON cron_string [ AT TIME ZONE timezone_id ] }

  column_clause
    column_identifier
    { COMMENT clause |
      SET MASK clause |
      DROP MASK |
      SET TAGS clause |
      UNSET TAGS clause }

パラメーター

  • view_name

    定義を変更する具体化されたビューの名前。 この名前には、テンポラル仕様を含めることはできません。

  • schedule

    具体化されたビューに SCHEDULE または TRIGGER ステートメントを追加または変更します。

    このコマンドを使用して、Lakeflow Spark 宣言パイプラインで作成された具体化されたビューのスケジュールを変更することはできません。 パイプライン エディターを使用します。

    • SCHEDULE [ REFRESH ] schedule_clause

      • EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }

        定期的に更新をスケジュールするには、 EVERY 構文を使用します。 EVERY構文が指定されている場合、ストリーミング テーブルまたは具体化されたビューは、指定された値 (HOURHOURSDAYDAYSWEEKWEEKSなど) に基づいて、指定した間隔で定期的に更新されます。 次の表に、 numberに使用できる整数値を示します。

        時間単位 整数値
        HOUR or HOURS 1 <= H <= 72
        DAY or DAYS 1<= D<= 31
        WEEK or WEEKS 1 <= W <= 8

        含まれる時間単位の単数形と複数形は、意味的に同等です。

      • CRON cron_string [ AT TIME ZONE timezone_id ]

        quartz cron 値を使用して更新をスケジュールします。 有効な time_zone_values が受け入れられます。 AT TIME ZONE LOCAL はサポートされません。

        AT TIME ZONE が存在しない場合は、セッション タイム ゾーンが使用されます。 AT TIME ZONE が存在せず、セッション タイム ゾーンも設定されていない場合は、エラーがスローされます。 SCHEDULE は意味的に SCHEDULE REFRESH と同等です。

    • TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ]

      重要

      TRIGGER ON UPDATE機能はベータ版です

      アップストリーム データ ソースが更新されたときに、最大で 1 分に 1 回更新するように具体化されたビューを設定します。 AT MOST EVERYの値を設定して、更新の間に少なくとも最小限の時間を必要とします。

      アップストリーム データ ソースは、外部またはマネージド Delta テーブル (具体化されたビューやストリーミング テーブルを含む) か、依存関係がサポートされているテーブルの種類に制限されているマネージド ビューである必要があります。

      ファイル イベントを有効にすると、トリガーのパフォーマンスが向上し、トリガーの更新の制限の一部が増える可能性があります。

      trigger_intervalは、少なくとも 1 分の INTERVAL ステートメントです。

      TRIGGER ON UPDATE には次の制限があります

      • TRIGGER ON UPDATEを使用する場合、具体化ビューあたり最大10個のアップストリームデータソースが許可されていません。
      • TRIGGER ON UPDATEでは、最大 1,000 個のストリーミング テーブルまたは具体化されたビューを指定できます。
      • AT MOST EVERY句の既定値は 1 分で、1 分未満にすることはできません。
  • DROP SCHEDULE

    具体化されたビューからスケジュールを削除します。

  • ALTER COLUMN clause

    ALTER COLUMN 句を参照してください。

  • SET ROW FILTER 句

    重要

    この機能はパブリック プレビュー段階にあります。

    具体化されたビューに行フィルター関数を追加します。 具体化されたビューに対する後続のすべてのクエリは、関数がTRUEというブール値に評価される行のサブセットを取得します。 これは、関数が呼び出し元ユーザーの ID またはグループ メンバーシップを検査して、特定の行をフィルター処理するかどうかを決定できる、きめ細かいアクセス制御に役立ちます。

    作成後に追加された行フィルターは、次の更新後にのみダウンストリーム テーブルに反映されます。 継続的なパイプラインの場合、これにはパイプラインの再起動が必要です。

  • DROP ROW FILTER

    重要

    この機能はパブリック プレビュー段階にあります。

    具体化されたビュー (ある場合) から行フィルターを削除します。 今後のクエリでは、自動のフィルタリングなしにテーブルからすべての行が返されます。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    重要

    この機能はパブリック プレビュー段階にあります。

    具体化されたビューにタグを適用します。 具体化されたビューにタグを追加するには、 APPLY TAG アクセス許可が必要です。

    • tag_name

      文字通りの STRINGtag_nameは、具体化されたビューまたは列内で一意である必要があります。

    • tag_value

      文字通りの STRING

  • UNSET TAGS ( tag_name [, ...] )

    重要

    この機能はパブリック プレビュー段階にあります。

    具体化されたビューからタグを削除します。 具体化されたビューからタグを削除するには、 APPLY TAG アクセス許可が必要です。

    • tag_name

      文字通りの STRINGtag_nameは、具体化されたビューまたは列内で一意である必要があります。

ALTER COLUMN 句

重要

この機能はパブリック プレビュー段階にあります。

プロパティまたは列の場所を変更します。

構文

  ALTER COLUMN
    column_identifier
    { COMMENT comment |
      SET MASK mask_clause |
      DROP MASK |
      SET TAGS clause |
      UNSET TAGS clause }

パラメーター

  • column_identifier

    変更する列の名前。

  • COMMENT comment

    column_name 列の説明を変更します。 comment は、STRING リテラルにする必要があります。

  • SET MASK 句

    列マスク関数を追加して、機密データを匿名化します。 その列の後続のすべてのクエリは、列の元の値の代わりに、その列に対してその関数を評価した結果を受け取ります。 これは、値を編集するかどうかを決定するために関数で呼び出し元ユーザーの ID またはグループ メンバーシップを検査できる、きめ細かいアクセス制御の目的に役立ちます。

    作成後に追加された列マスクは、次の更新後にのみダウンストリーム テーブルに反映されます。 継続的なパイプラインの場合、これにはパイプラインの再起動が必要です。

  • DROP MASK

    この列の列マスク (存在する場合) を削除します。 この列からの今後のクエリは、列の元の値を受け取ります。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    列にタグを適用します。 列にタグを追加するには、APPLY TAG アクセス許可が必要です。

    • tag_name

      文字通りの STRINGtag_name はテーブル内または列内で一意にする必要があります。

    • tag_value

      文字通りの STRING

  • UNSET TAGS ( tag_name [, ...] )

    列から指定されたタグを削除します。 列からタグを削除するには、APPLY TAG アクセス許可が必要です。

    • tag_name

      文字通りの STRINGtag_name はテーブル内または列内で一意にする必要があります。

-- Adds a schedule to refresh the materialized view whenever its upstream data gets updated.
> ALTER MATERIALIZED VIEW my_mv
    ADD TRIGGER ON UPDATE;

-- Alters the schedule to refresh the materialized view when its upstream data
-- gets updated, and make sure the update frequency is no more than 1 update
-- per hour.
> ALTER MATERIALIZED VIEW my_mv
    ALTER TRIGGER ON UPDATE AT MOST EVERY INTERVAL 1 hour;

-- Alters the schedule to run every two hours for a materialized view
> ALTER MATERIALIZED VIEW my_mv
    ALTER SCHEDULE EVERY 2 HOURS;

-- Alters the schedule to refresh a materialized view once a day
-- at midnight in Los Angeles
> ALTER MATERIALIZED VIEW my_mv
    ALTER SCHEDULE CRON '0 0 0 * * ? *' AT TIME ZONE 'America/Los_Angeles';

-- Drops the schedule for a materialized view
> ALTER MATERIALIZED VIEW my_mv
    DROP SCHEDULE;

-- Adds a column comment
> ALTER MATERIALIZED VIEW my_mv
    ALTER COLUMN my_column_name COMMENT 'test'