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

:マテリアライズドビューの自動ガバナンス

最終更新日:Jan 11, 2025

DataWorks は、インテリジェントな推奨事項に基づくマテリアライズドビューの自動ガバナンスをサポートしています。これは、多数の類似したサブクエリを含む、頻繁に発生するビッグデータコンピューティングタスクのためのインテリジェントで自動化されたソリューションです。マテリアライズドビューでインテリジェント推奨機能を有効にすると、DataWorks は MaxCompute 内の類似したサブクエリを自動的に識別および分類し、マテリアライズドビューを作成するための推奨事項を生成できます。ビジネス要件に基づいて、数回クリックするだけでマテリアライズドビューを作成できます。これにより、コンピューティング効率が大幅に向上し、コンピューティングリソースを節約できます。

機能

DataWorks のマテリアライズドビューの自動ガバナンス機能は、MaxCompute のマテリアライズドビュー機能に基づいています。マテリアライズドビューの自動ガバナンス機能を使用すると、DataWorks スケジューリングシナリオの MaxCompute SQL ステートメントに存在する多数の類似したサブクエリをすばやくスキャンして識別できます。次に、DataWorks は類似したサブクエリを使用して、マテリアライズドビューを効率的に作成するために使用できるビュー生成 SQL ステートメントを推奨します。

ビューが作成されると、DataWorks はビューデータを生成するノードを同期的に作成し、スケジューリングのために本番環境にノードをデプロイします。DataWorks で元々類似したサブクエリを持つノードは、ビューデータを生成するノードの子孫ノードとして均一に指定されます。DataWorks は、スケジューリングの依存関係に基づいて、ビューデータを生成するノードを優先的にスケジューリングします。子孫ノードがパブリックサブクエリを使用する場合、ノードはデータを生成したマテリアライズドビューからデータをクエリします。これにより、ガバナンス目的のデータの反復計算が削減されます。

DataWorks のマテリアライズドビューの自動ガバナンス機能は、次のリージョンで使用できます:中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (北京)、中国 (成都)。

前提条件

使用プロセス

  1. マテリアライズドビューのインテリジェント推奨機能を有効にします。

    DataWorks Data Studio に関連付けられている MaxCompute プロジェクトでマテリアライズドビューのインテリジェント推奨機能を有効にすると、次の条件が満たされた場合、マテリアライズドビューを作成するための推奨事項が生成され、[マテリアライズドビューの推奨] タブに表示されます。

    • 自動トリガーされたタスクが 3 日以上連続して実行されている。

    • パブリックサブクエリの入力データの行数が 1,000,000 を超えている。

    • パブリックサブクエリに、結合演算子や集計演算子など、データの再編成に関連する演算子が含まれている。

  2. 推奨事項を表示し、マテリアライズドビューを作成します。

    推奨事項が有効かどうかを確認し、マテリアライズドビューを作成および管理できます。

    マテリアライズドビューを作成するときに、[マテリアライズドビュー更新ノードの作成] セクションと [マテリアライズドビュー更新ノードを祖先ノードとして追加] セクションのパラメーターを設定すると、作成されたマテリアライズドビューは DataWorks のスケジューリングシナリオで有効になります。

    マテリアライズドビュー更新ノードは、類似の計算ロジックを持つノードの祖先ノードとして自動的に追加されます。祖先ノードまたはソーステーブルを生成するノードが新しい出力を生成すると、マテリアライズドビューが更新され、子孫ノードがクエリするための最新のデータが生成されます。

  3. マテリアライズドビューを管理します。

    現在のワークスペースでのマテリアライズドビューの使用状況を表示し、出力データが期待どおりでないマテリアライズドビューを分析または削除できます。

手順

ステップ 1:マテリアライズドビューのインテリジェント推奨機能を有効または無効にする

説明

ワークスペース管理者ロールが割り当てられているユーザーのみが、マテリアライズドビューのインテリジェント推奨機能を有効または無効にできます。

  1. データガバナンスセンターページに移動します。

    DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションペインで、[データ開発とガバナンス] > [データガバナンスセンター] を選択します。表示されるページで、[データガバナンスセンターに移動] をクリックします。

  2. データガバナンスセンターページの上部ナビゲーションバーで、[ワークベンチ] をクリックします。左側のナビゲーションペインで、[マテリアライズドビュー] をクリックします。

  3. [マテリアライズド ビュー] ページで、[ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズド ビュー レコメンデーションの設定] をクリックします。 [マテリアライズド ビュー レコメンデーションの設定] ダイアログボックスで、マテリアライズド ビューのインテリジェント レコメンデーション機能を有効にするプロジェクトの [インテリジェント マテリアライズド ビュー レコメンデーション] 列のスイッチをオンにします。

    image

ステップ 2:推奨されるマテリアライズドビューを表示する

マテリアライズドビュー推奨モジュールは、作成可能なマテリアライズドビューと関連するコンピューティングタスクを自動的に識別できます。関連する所有者は、マテリアライズドビューが有効かどうかを判断し、作成プロセスを管理できます。

重要

正確な推奨を確実にするために、マテリアライズドビューのインテリジェント推奨機能を有効にした後、次の条件が満たされた場合にのみ、[マテリアライズドビューの推奨] タブに関連する推奨事項が生成されて表示されます。

  • 自動トリガーされたタスクが 3 日以上連続して実行されている。

  • パブリックサブクエリの入力データの行数が 1,000,000 を超えている。

  • パブリックサブクエリに、結合演算子や集計演算子など、データの再編成に関連する演算子が含まれている。

  1. 上部ナビゲーションバーの [ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズドビューの推奨] タブをクリックします。

  2. [プロジェクト][分析期間] などのフィルター条件を変更して、マテリアライズドビューを作成するための推奨事項が生成されているかどうかを確認します。

    [分析期間] パラメーターで指定された期間にマテリアライズドビューを作成するための推奨事項が利用可能な場合は、推奨事項を表示できます。

    image

    パラメーター:

    • [マテリアライズドビューの推奨]:マテリアライズドビュー推奨タスクの識別子。識別子には、パブリックサブクエリに関する概要情報が含まれています。識別子の形式:Aggregate: xx; Inputs: xx, xx;

      • Aggregate:推奨されるパブリックサブクエリに集計操作が含まれているかどうかを示します。

      • Inputs:パブリックサブクエリで使用されるすべてのソーステーブルの名前を一覧表示します。

    • [影響を受ける可能性のある SQL ステートメントの数]:パブリックサブクエリを使用するジョブの数。

    • [影響を受ける可能性のあるノード]:パブリックサブクエリを使用するスケジューリングノードの数。

    • [推奨レーティング]:推奨の程度。サブクエリの繰り返し、サブクエリの複雑さ、入力データレコードの数によって決まります。

  3. [マテリアライズドビューの推奨] 列のマテリアライズドビュー推奨タスクの識別子をクリックして、パブリックサブクエリの詳細を表示します。詳細には、[ソーステーブル情報][パブリックサブクエリ][ジョブ][スケジューリングタスク] が含まれます。

    image

ステップ 3:マテリアライズドビューを作成する

  1. [マテリアライズドビューの推奨] タブで、ビジネス要件と推奨事項の詳細に基づいてマテリアライズドビューを作成するかどうかを決定します。マテリアライズドビューを作成するには、マテリアライズドビューの作成元の推奨事項を見つけ、[アクション] 列の [マテリアライズドビューの作成] をクリックします。

  2. [マテリアライズドビューの作成] ページで、マテリアライズドビューのパラメーターを設定します。image

    1. [マテリアライズドビューの作成] セクションで、マテリアライズドビュー更新ノードを作成し、入力タスクのパブリックサブクエリに基づいてマテリアライズドビューを生成します。

      パラメーター

      説明

      入力テーブル

      入力テーブル。自動的に取得されるため、変更する必要はありません。

      マテリアライズドビューを作成するかどうか

      初めてマテリアライズドビューを作成するときは、デフォルト値の [マテリアライズドビューを作成] が使用されます。値を変更する必要はありません。

      説明

      同じ入力テーブルが選択されているマテリアライズドビューが既に存在する場合は、ビジネス要件に基づいてパラメーターを [既存のマテリアライズドビューを選択] に設定できます。

      マテリアライズドビュー名

      マテリアライズドビューの名前。ビジネス要件に基づいて名前を指定できます。

      ライフサイクル

      マテリアライズドビューのライフサイクル。有効な値:[1 日][7 日][カスタム日数]

      更新タイプ

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

      • [一定間隔で更新]

        データを読み取るテーブルが DataWorks のタスクの出力である場合、デフォルトで [時間管理 Cron モード] が選択されます。それ以外の場合は、[一定間隔で更新] が選択されます。

      • [時間管理 Cron モード]

        マテリアライズドビューは、データを読み取るテーブルを生成するノードの最新の出力時刻に更新されます。

      • [更新しない]

      プレビューステートメント

      マテリアライズドビューの SQL ステートメント。

    2. オプション。 [マテリアライズドビュー更新ノードの作成] セクションで、マテリアライズドビュー更新ノードを作成します。ソーステーブルを生成するノードが新しい出力を生成すると、マテリアライズドビュー更新ノードはマテリアライズドビューを動的に更新して最新のデータをマテリアライズします。

      [マテリアライズドビュー更新ノード名] パラメーターと [ノード実行タイムアウト期間] パラメーターを設定します。image

    3. オプション。 [マテリアライズドビュー更新ノードを祖先ノードとして追加] セクションで、マテリアライズドビュー更新ノードを、類似の計算ロジックを持つノードの祖先ノードとして追加して、増分データのクエリヒット率を高めます。image

      このセクションに表示されるコンピューティングタスクには、現在のワークスペースのタスクと他のワークスペースのタスクが含まれます。[詳細の表示] をクリックして、コンピューティングタスクの詳細を表示できます。

      image

  3. [作成して実行] をクリックします。DataWorks はマテリアライズドビューの作成を開始します。[マテリアライズドビューの推奨] タブの [操作ステータス] 列でマテリアライズドビューのステータスを表示するか、[アクション] 列の [詳細の表示] をクリックして作成の進行状況を表示できます。

    • [操作ステータス] パラメーターの有効な値:

      • 作成予定:マテリアライズドビューは DataWorks を使用して作成されていません。

      • 作成済み:マテリアライズドビューが作成されています。

      • 作成中:DataWorks を使用したマテリアライズドビューの作成プロセスが開始されましたが、作成はまだ完了していません。

      • 作成失敗:DataWorks を使用したマテリアライズドビューの作成プロセスが開始されましたが、作成に失敗しました。

    • [詳細の表示] をクリックして、マテリアライズドビューの作成プロセスの詳細を表示できます。

      image

[マテリアライズドビュー更新ノードの作成] セクションと [マテリアライズドビュー更新ノードを祖先ノードとして追加] セクションのパラメーターをマテリアライズドビューの作成時に設定すると、マテリアライズドビュー更新ノードが、類似の計算ロジックを持つノードの祖先ノードとして追加されます。マテリアライズドビュー更新ノードの所有者は、マテリアライズドビューの作成に使用されたアカウントです。

ステップ 4:マテリアライズドビューを管理する

現在のワークスペースでのマテリアライズドビューの使用状況を表示し、出力データが期待どおりでないマテリアライズドビューを分析または削除できます。

  1. 上部ナビゲーションバーの [ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズドビューの管理] タブをクリックします。

  2. [プロジェクト] などのフィルター条件を変更して、推奨事項を使用して作成されたマテリアライズドビューを表示します。

    image

    重要

    MaxCompute プロジェクトでクォータに従量課金制を使用している場合、節約された合計計算容量は次の式を使用して計算されます:入力データ量 × SQL の複雑さ。MaxCompute SQL ジョブの料金は、次の式を使用して計算されます:計算容量 × 単価。詳細については、「Computing pricing」をご参照ください。

    • [マテリアライズドビュー] 列のマテリアライズドビューの名前をクリックして、マテリアライズドビューの詳細を表示します。

      image

    • マテリアライズドビューの [アクション] 列の [削除] をクリックして、マテリアライズドビューを削除します。

設定例

説明

この例で使用されているテストデータは、MaxCompute パブリックデータセットからのものです。詳細については、「TPC-DS データ」をご参照ください。ビジネスデータに関連するテーブルを構成に使用できます。

データの準備

  1. MaxCompute データソースを追加し、データソースを DataWorks Data Studio に関連付けます。

  2. Data Studio で Materialized_View_Test という名前のゼロロードノードを作成し、ゼロロードノードを子孫ノードのルートノードとして指定します。

  3. この例では、Data Studio に 4 つの ODPS ノードを作成します。

    dws_customer_info_1 ノードと dws_customer_info_2 ノードはパブリックサブクエリを使用し、ods_mc_tpc_customer ノードと ods_mc_tpc_customer_address ノードからデータを取得します。

    ods_mc_tpc_customer

    スケジューリングパラメーターの [パラメーター名]bday で、スケジューリングパラメーターの [値]$[yyyymmdd] です。

    CREATE TABLE IF NOT EXISTS ods_mc_tpc_customer
    (
        c_customer_sk           BIGINT NOT NULL
        ,c_customer_id          CHAR(16) NOT NULL
        ,c_current_cdemo_sk     BIGINT
        ,c_current_hdemo_sk     BIGINT
        ,c_current_addr_sk      BIGINT
        ,c_first_shipto_date_sk BIGINT
        ,c_first_sales_date_sk  BIGINT
        ,c_salutation           CHAR(10)
        ,c_first_name           CHAR(20)
        ,c_last_name            CHAR(30)
        ,c_preferred_cust_flag  CHAR(1)
        ,c_birth_day            BIGINT
        ,c_birth_month          BIGINT
        ,c_birth_year           BIGINT
        ,c_birth_country        VARCHAR(20)
        ,c_login                CHAR(13)
        ,c_email_address        CHAR(50)
        ,c_last_review_date_sk  CHAR(10)
    )
    COMMENT 'TABLE COMMENT' /* テーブルコメント */
    PARTITIONED BY (ds STRING COMMENT 'Partition' /* パーティション */)
    LIFECYCLE 90;
    
    SET odps.namespace.schema=TRUE;
    INSERT OVERWRITE TABLE ods_mc_tpc_customer PARTITION(ds='${bday}')
    select * from BIGDATA_PUBLIC_DATASET.TPCDS_10T.customer;

    ods_mc_tpc_customer_address

    スケジューリングパラメーターの [パラメーター名]bday で、スケジューリングパラメーターの [値]$[yyyymmdd] です。

    CREATE TABLE IF NOT EXISTS ods_mc_tpc_customer_address
    (
        ca_address_sk           BIGINT NOT NULL
        ,ca_address_id          CHAR(16) NOT NULL
        ,ca_street_number       CHAR(10)
        ,ca_street_name         VARCHAR(60)
        ,ca_street_type         CHAR(15)
        ,ca_suite_number        CHAR(10)
        ,ca_city                VARCHAR(60)
        ,ca_county              VARCHAR(30)
        ,ca_state               CHAR(2)
        ,ca_zip                 CHAR(10)
        ,ca_country             VARCHAR(20)
        ,ca_gmt_offset          DECIMAL(5,2)
        ,ca_location_type       CHAR(20)
    )
    COMMENT 'TABLE COMMENT' /* テーブルコメント */
    PARTITIONED BY (ds STRING COMMENT 'Partition' /* パーティション */)
    LIFECYCLE 90;
    
    SET odps.namespace.schema=TRUE;
    INSERT OVERWRITE TABLE ods_mc_tpc_customer_address PARTITION(ds='${bday}')
    select * from BIGDATA_PUBLIC_DATASET.TPCDS_10T.customer_address;

    dws_customer_info_1

    スケジューリングパラメーターの [パラメーター名]bday で、スケジューリングパラメーターの [値]$[yyyymmdd] です。

    CREATE TABLE IF NOT EXISTS dws_customer_info_1
    (
        c_customer_sk           BIGINT NOT NULL
        ,c_customer_id          CHAR(16) NOT NULL
        ,c_first_name           CHAR(20)
        ,c_last_name            CHAR(30)
        ,c_email_address        CHAR(50)
        ,ca_suite_number        CHAR(10)
        ,ca_city                VARCHAR(60)
        ,ca_county              VARCHAR(30)
        ,ca_state               CHAR(2)
    )
    COMMENT 'TABLE COMMENT' /* テーブルコメント */
    PARTITIONED BY 
    (
        ds                      STRING COMMENT 'Partition' /* パーティション */
    )
    LIFECYCLE 90
    ;
    
    INSERT OVERWRITE TABLE dws_customer_info_1 PARTITION (ds = '${bday}')
    SELECT  t02.c_customer_sk
            ,t02.c_customer_id
            ,t02.c_first_name
            ,t02.c_last_name
            ,t02.c_email_address
            ,t03.ca_suite_number
            ,t03.ca_city
            ,t03.ca_county
            ,t03.ca_state
    FROM    (
                SELECT  *
                FROM    ods_mc_tpc_customer_address 
                WHERE   ds = '${bday}'
            ) t03
    JOIN    (
                SELECT  *
                FROM    ods_mc_tpc_customer
                WHERE   ds = '${bday}'
            ) t02
    ON      t03.ca_address_sk = t02.c_current_addr_sk
    ;

    dws_customer_info_2

    スケジューリングパラメーターの [パラメーター名]bday で、スケジューリングパラメーターの [値]$[yyyymmdd] です。

    CREATE TABLE IF NOT EXISTS dws_customer_info_2
    (
        c_customer_sk           BIGINT NOT NULL
        ,c_customer_id          CHAR(16) NOT NULL
        ,c_first_name           CHAR(20)
        ,c_last_name            CHAR(30)
        ,c_email_address        CHAR(50)
        ,ca_suite_number        CHAR(10)
        ,ca_city                VARCHAR(60)
        ,ca_county              VARCHAR(30)
        ,ca_state               CHAR(2)
    )
    COMMENT 'TABLE COMMENT' /* テーブルコメント */
    PARTITIONED BY 
    (
        ds                      STRING COMMENT 'Partition' /* パーティション */
    )
    LIFECYCLE 90
    ;
    
    INSERT OVERWRITE TABLE dws_customer_info_2 PARTITION (ds = '${bday}')
    SELECT  t02.c_customer_sk
            ,t02.c_customer_id
            ,t02.c_first_name
            ,t02.c_last_name
            ,t02.c_email_address
            ,t03.ca_suite_number
            ,t03.ca_city
            ,t03.ca_county
            ,t03.ca_state
    FROM    (
                SELECT  *
                FROM    ods_mc_tpc_customer_address 
                WHERE   ds = '${bday}'
            ) t03
    JOIN    (
                SELECT  *
                FROM    ods_mc_tpc_customer
                WHERE   ds = '${bday}'
            ) t02
    ON      t03.ca_address_sk = t02.c_current_addr_sk
    ;
  4. [保存][コミット] の順にクリックし、ノードを本番環境にデプロイします。運用センターでノードの依存関係を表示できます。

    image

マテリアライズドビューを有効にする

  1. MaxCompute でマテリアライズドビューのインテリジェント分析機能を有効にします。詳細については、「マテリアライズドビューの推奨と管理」をご参照ください。

  2. DataWorks データガバナンスセンターでマテリアライズドビューのインテリジェント推奨機能を有効にします。詳細については、「ステップ 1:マテリアライズドビューのインテリジェント推奨機能を有効または無効にする」をご参照ください。

  3. 自動トリガーされたタスクが 3 日以上実行された後、DataWorks データガバナンスセンターでマテリアライズドビューを作成するための推奨事項を表示できます。

    説明

    この例で使用されているテストデータは 10 TB のTPC-DS データセットであり、マテリアライズドビューの推奨事項を生成するための要件を満たしています。[マテリアライズドビューの推奨] タブに生成された推奨事項が表示されない場合は、データが要件を満たしているかどうかを確認してください。

    • 自動トリガーされたタスクが 3 日以上連続して実行されている。

    • パブリックサブクエリの入力データの行数が 1,000,000 を超えている。

    • パブリックサブクエリに、結合演算子や集計演算子など、データの再編成に関連する演算子が含まれている。

    image

マテリアライズドビューを作成する

  1. [マテリアライズドビューの推奨] タブで推奨事項を見つけ、[アクション] 列の [マテリアライズドビューの作成] をクリックします。詳細については、「ステップ 3:マテリアライズドビューを作成する」をご参照ください。

    image

    説明

    [マテリアライズドビュー更新ノードの作成] セクションと [マテリアライズドビュー更新ノードを祖先ノードとして追加] セクションのパラメーターはデフォルトで設定されており、変更する必要はありません。

  2. [作成して実行] をクリックします。[マテリアライズドビューの推奨] タブで、作成の詳細を表示できます。

    image

  3. マテリアライズドビューが作成された後、ノードが 2 回目に実行されるときに、マテリアライズドビューがスケジューリングノードで使用されていることがわかります。重複するサブクエリの場合、ノードは関連するマテリアライズドビュー更新ノードからデータをクエリします。

    image

関連情報