すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:マテリアライズドビューの更新予定

最終更新日:Jan 22, 2025

このトピックでは、マテリアライズドビューのスケジュール更新機能と関連操作について説明します。

使用上の注意

  • 具体化されたビューのスケジュールされた更新は、本質的に、システムバックグラウンドによって提出されるタスクである。 更新完了時間は、使用可能なクラスターリソースの量とタスクのサイズによって異なります。

  • スケジュールされた更新がトリガーされると、すべてのデータが更新されます。

    • パーティション化されたマテリアライズドビューのパーティションキー列に対応するパーティション化ベーステーブルのパーティション内のデータが変更された場合、マテリアライズドビューの関連付けられたパーティション内のデータのみが更新されます。 他のパーティションのデータは影響を受けません。 パーティション分割されたマテリアライズドビューに関連付けられている他のテーブルのデータが変更されると、マテリアライズドビューの全データが更新されます。

    • パーティション分割されていないマテリアライズドビューのスケジュール更新機能を有効にすると、更新操作が必要かどうかが自動的に確認されます。 ソーステーブル内のデータが更新されない場合、更新操作はスキップされます。

  • スケジュールされた更新が次の更新時間の前に完了しない場合、システムは自動的に次のスケジュールされた更新をキャンセルし、最後のスケジュールされた時間に新しい更新をトリガーします。

    例えば、スケジュールされた更新は、20分の間隔でトリガされる。 第1の更新が10:00:00にスケジュールされている場合、第2の更新は10:20:00にスケジュールされる予定であり、第3の更新は10:40:00にスケジュールされる予定である。

    最初の更新が10:00:00で開始し、10:30:00で終了する場合、10:20:00にスケジュールされる予定の更新はキャンセルされ、次の更新は10:40:00にスケジュールされます。

  • MaxComputeは、マテリアライズドビューのスケジュールされた更新設定をリアルタイムで検出できず、マテリアライズドビューの自動更新タスクを30分未満の遅延で送信する場合があります。

マテリアライズドビューのスケジュール更新機能の有効化

次のいずれかの方法を使用して、MaxComputeのマテリアライズドビューのスケジュール更新機能を有効にできます。

このトピックの例では、mf_refreshテーブルに基づいてマテリアライズドビューが作成されます。

CREATE TABLE mf_refresh (id bigint, name string);
INSERT INTO TABLE mf_refresh VALUES (1,'kyle'),(2,'tom');

EVERYパラメーターの使用

マテリアライズドビューを作成するときに、マテリアルビューを更新する間隔を指定します。 間隔は、N分、時間、または日とすることができる。 次の更新時間は、前の更新時間にN分、時間、または日を加えたものである。

  • 構文

    CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name 
    [LIFECYCLE days] -- The lifecycle of the materialized view.
    [(col_name [COMMENT col_comment], ...)] -- The column comments.
    [DISABLE REWRITE] -- Specifies whether to disable the query rewrite operation that is performed based on the materialized view.
    [PARTITIONED BY (col_name [, col_name, ...]) -- The partition key columns in the materialized view. This parameter is required when you create a partitioned materialized view.
    [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...])
    [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])]
    INTO number_of_buckets BUCKETS] -- The shuffle and sort attributes of the materialized view. This parameter is required when you create a clustered materialized view.
    
    [REFRESH EVERY xx MINUTES/HOURS/DAYS] -- The scheduled update interval of the materialized view.
    TBLPROPERTIES("enable_auto_refresh"="true") -- Enable the scheduled update feature for the materialized view.
    AS <select_statement>;
  • 10分間隔で更新されるマテリアライズドビューを作成します。

    1. mf_mv_refreshという名前のマテリアライズドビューを作成し、マテリアライズドビューを照会します。

      CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh  
      REFRESH EVERY 10 minutes 
      TBLPROPERTIES("enable_auto_refresh"="true") 
      AS SELECT id,name FROM mf_refresh; 
      
      SELECT * FROM mf_mv_refresh;

      次の結果が返されます。

      +------------+------------+
      | id         | name       |
      +------------+------------+
      | 1          | kyle       |
      | 2          | tom        |
      +------------+------------+
    2. テーブルにデータを挿入します。

      INSERT INTO TABLE mf_refresh VALUES (3,'jen'),(4,'cathy'); 
    3. 10分後にマテリアライズドビューを照会します。

      SELECT * FROM mf_mv_refresh;

      次の結果が返されます。

      +------------+------------+
      | id         | name       |
      +------------+------------+
      | 1          | kyle       |
      | 2          | tom        |
      | 3          | jen        |
      | 4          | cathy      |
      +------------+------------+

を使用します。Use therefresh_interval_minutesTBLPROPERTIESのパラメータ

マテリアライズドビューを作成するときに、スケジュールされた更新間隔を指定します。 たとえば、スケジュールされた更新間隔をN分に設定します。 次の更新時点は、前の更新時点にN分を加えたものである。

  • 構文

    CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name
    [LIFECYCLE days] -- The lifecycle of the materialized view.
    [(col_name [COMMENT col_comment], ...)] -- The column comments.
    [DISABLE REWRITE] -- Specifies whether to disable the query rewrite operation that is performed based on the materialized view.
    [PARTITIONED BY (col_name [, col_name, ...]) -- The partition key columns in the materialized view. This parameter is required when you create a partitioned materialized view.
    [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...])
    [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])]
    INTO number_of_buckets BUCKETS] -- The shuffle and sort attributes of the materialized view. This parameter is required when you create a clustered materialized view.
    TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="xx")
    -- Enable the scheduled update feature.
    AS <select_statement>;
  • 20分間隔で更新されるマテリアライズド・ビューを作成します。

    1. mf_mv_refresh2という名前のマテリアライズドビューを作成し、マテリアライズドビューを照会します。

      CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh2 
      TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="20") 
      AS SELECT id,name FROM mf_refresh; 
      
      SELECT * FROM mf_mv_refresh2; 

      次の結果が返されます。

      +------------+------------+
      | id         | name       |
      +------------+------------+
      | 1          | kyle       |
      | 2          | tom        |
      | 3          | jen        |
      | 4          | cathy      |
      +------------+------------+
    2. テーブルにデータを挿入します。

      INSERT INTO TABLE mf_refresh VALUES (5,'roger'),(6,'david'); 
    3. 20分後にマテリアライズドビューを照会します。

      SELECT * FROM mf_mv_refresh2; 

      次の結果が返されます。

      +------------+------------+
      | id         | name       |
      +------------+------------+
      | 1          | kyle       |
      | 2          | tom        |
      | 3          | jen        |
      | 4          | cathy      |
      | 5          | roger      |
      | 6          | david      |
      +------------+------------+

TBLPROPERTIESのrefresh_cronパラメーターを使用

Cron式を使用して、スケジュールされた更新の間隔または時点を指定できます。

  • 構文

    CREATE MATERIALIZED VIEW [IF NOT EXISTS] [project_name.]mv_name
    [LIFECYCLE days] -- The lifecycle of the materialized view.
    [(col_name [COMMENT col_comment], ...)] -- The column comments.
    [DISABLE REWRITE] -- Specifies whether to disable the query rewrite operation that is performed based on the materialized view.
    [PARTITIONED BY (col_name [, col_name, ...]) -- The partition key columns in the materialized view. This parameter is required when you create a partitioned materialized view.
    [CLUSTERED BY|RANGE CLUSTERED BY (col_name [, col_name, ...])
    [SORTED BY (col_name [ASC | DESC] [, col_name [ASC | DESC] ...])]
    INTO number_of_buckets BUCKETS] -- The shuffle and sort attributes of the materialized view. This parameter is required when you create a clustered materialized view.
    
    TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="xx")
    -- Enable the scheduled update feature.
    AS <select_statement>;

    refresh_cronパラメーターは、Quartz cron形式の文字列です。 詳細については、「Cron式の例」をご参照ください。

    • 5分間隔で更新されるマテリアライズド・ビューを作成します。

      1. mf_mv_refresh3という名前のマテリアライズドビューを作成し、マテリアライズドビューを照会します。

        CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh3 
        TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="* */5 * * * ?  *") 
        AS SELECT id,name FROM mf_refresh; 
        
        SELECT * FROM mf_mv_refresh3; 

        次の結果が返されます。

        +------------+------------+
        | id         | name       |
        +------------+------------+
        | 1          | kyle       |
        | 2          | tom        |
        | 3          | jen        |
        | 4          | cathy      |
        | 5          | roger      |
        | 6          | david      |
        +------------+------------+
      2. テーブルにデータを挿入します。

        INSERT INTO TABLE mf_refresh VALUES (7,'ethan'),(8,'cal');
      3. 5分後にマテリアライズドビューを照会します。

        SELECT * FROM mf_mv_refresh3;

        次の結果が返されます。

        +------------+------------+
        | id         | name       |
        +------------+------------+
        | 1          | kyle       |
        | 2          | tom        |
        | 7          | ethan      |
        | 8          | cal        |
        | 3          | jen        |
        | 4          | cathy      |
        | 5          | roger      |
        | 6          | david      |
        +------------+------------+ 
    • 毎晩20:00に更新されるマテリアライズドビューを作成します。

      1. mf_mv_refresh4という名前のマテリアライズドビューを作成し、マテリアライズドビューを照会します。

        CREATE MATERIALIZED VIEW IF NOT EXISTS mf_mv_refresh4 
        TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="0 0 20 * * ?  *") 
        AS SELECT id,name FROM mf_refresh; 
        
        SELECT * FROM mf_mv_refresh4; 

        次の結果が返されます。

        +------------+------------+
        | id         | name       |
        +------------+------------+
        | 1          | kyle       |
        | 2          | tom        |
        | 7          | ethan      |
        | 8          | cal        |
        | 3          | jen        |
        | 4          | cathy      |
        | 5          | roger      |
        | 6          | david      |
        +------------+------------+
      2. テーブルにデータを挿入します。

        INSERT INTO TABLE mf_refresh VALUES (9,'annie'),(10,'zoe');
      3. 20:00後にマテリアライズドビューを照会します。

        SELECT * FROM mf_mv_refresh4;

        次の結果が返されます。

        +------------+------------+
        | id         | name       |
        +------------+------------+
        | 1          | kyle       |
        | 2          | tom        |
        | 9          | annie      |
        | 10         | zoe        |
        | 7          | ethan      |
        | 8          | cal        |
        | 3          | jen        |
        | 4          | cathy      |
        | 5          | roger      |
        | 6          | david      |
        +------------+------------+  

マテリアライズドビューのスケジュール更新の間隔の変更

次のいずれかのステートメントを実行して、マテリアライズド・ビューのスケジュールされた更新の間隔を変更します。

ALTER MATERIALIZED VIEW mf_mv_refresh2 SET TBLPROPERTIES("enable_auto_refresh"="true", "refresh_interval_minutes"="xx");
ALTER MATERIALIZED VIEW mf_mv_refresh3 SET TBLPROPERTIES("enable_auto_refresh"="true", "refresh_cron"="xx");

スケジュール更新の無効化

次のステートメントを実行して、マテリアライズド・ビューのスケジュール更新機能を無効にします。

ALTER MATERIALIZED VIEW mf_mv_refresh SET TBLPROPERTIES("enable_auto_refresh"="false");

マテリアライズドビューの更新履歴の表示

マテリアライズド・ビューの更新履歴を表示するには、次のステートメントを実行します。

DESC EXTENDED mv;

次の結果が返されます。 マテリアライズドビューの詳細については、「マテリアライズドビューに関する情報の照会」をご参照ください。

+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$$****@***.aliyunid.com                       |
| Project:                  m****                                                |
| TableComment:                                                                      |
+------------------------------------------------------------------------------------+
| CreateTime:               2023-05-30 13:16:07                                      |
| LastDDLTime:              2023-05-30 13:16:07                                      |
| LastModifiedTime:         2023-05-30 13:16:07                                      |
+------------------------------------------------------------------------------------+
| MaterializedView: YES                                                              |
| ViewText: select id,name from mf_refresh                                           |
| Rewrite Enabled: true                                                              |
| AutoRefresh Enabled: true                                                          |
| Refresh Interval Minutes: 10                                                       |
+------------------------------------------------------------------------------------+
| Native Columns:                                                                    |
+------------------------------------------------------------------------------------+
| Field    | Type   | Label | ExtendedLabel | Nullable | DefaultValue | Comment      |
+------------------------------------------------------------------------------------+
| id       | bigint |       |               | true     | NULL         |              |
| name     | string |       |               | true     | NULL         |              |
+------------------------------------------------------------------------------------+
| Extended Info:                                                                     |
+------------------------------------------------------------------------------------+
| IsOutdated:               false                                                    |
| TableID:                  569ec712873e44b3868e79b7a8beabab                         |
| IsArchived:               false                                                    |
| PhysicalSize:             1875                                                     |
| FileNum:                  2                                                        |
| StoredAs:                 CFile                                                    |
| CompressionStrategy:      normal                                                   |
| odps.timemachine.retention.days: 1                                                        |
| ColdStorageStatus:        N/A                                                      |
| encryption_enable:        false                                                    |
+------------------------------------------------------------------------------------+
| AutoRefresh History:                                                               |
+------------------------------------------------------------------------------------+
| InstanceId                | Status     | StartTime           | EndTime             |
+------------------------------------------------------------------------------------+
| 20230619070546735ghwl1****** | TERMINATED | 2023-06-19 15:05:46 | 2023-06-19 15:05:47 |
| 20230619065545586gwllc****** | TERMINATED | 2023-06-19 14:55:45 | 2023-06-19 14:55:46 |
| 20230619064544463gcjgom****** | TERMINATED | 2023-06-19 14:45:44 | 2023-06-19 14:45:45 |
| 20230619063543334gzxs2d****** | TERMINATED | 2023-06-19 14:35:43 | 2023-06-19 14:35:44 |
| 2023061906254257gi21w2****** | TERMINATED | 2023-06-19 14:25:42 | 2023-06-19 14:25:43 |
| 20230619061540813giacg8****** | TERMINATED | 2023-06-19 14:15:41 | 2023-06-19 14:15:41 |
| 20230619060539674gswjq9****** | TERMINATED | 2023-06-19 14:05:39 | 2023-06-19 14:05:40 |
| 20230619055538578gvdjk****** | TERMINATED | 2023-06-19 13:55:38 | 2023-06-19 13:55:40 |
| 20230619054537356glqdne****** | TERMINATED | 2023-06-19 13:45:37 | 2023-06-19 13:45:38 |
| 2023061905353687gcc5pl****** | TERMINATED | 2023-06-19 13:35:36 | 2023-06-19 13:35:37 |
+------------------------------------------------------------------------------------+

関連ドキュメント