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

DataWorks:マテリアライズドビュー

最終更新日:Mar 27, 2026

複数の MaxCompute タスクが、高コストな結合または集約サブクエリを共有している場合、各タスクは同じ結果を個別に再計算します。Data Asset Governance は、ご利用のスケジューリング履歴を分析し、これらの冗長なサブクエリを特定して、数回のクリックで作成できるマテリアライズドビューを推奨します。作成後、DataWorks はスケジューリンググラフを再配線し、ダウンストリームタスクがサブクエリを再実行する代わりに、事前計算済みビューから読み取るようにします。

マテリアライズドビューを作成すると、スケジューリンググラフにリフレッシュノードが追加され、実行ごとに計算費用が発生します。従量課金プロジェクトの場合、節約される容量 = amount of input data × SQL complexity; リフレッシュ費用 = compute capacity × unit price計算集約型ジョブ (従量課金)」をご参照ください。ビューを作成する前に、費用対効果を評価してください。

マテリアライズドビューのレコメンデーションを使用するタイミング

マテリアライズドビューのレコメンデーションは、MaxCompute ワークロードが次の特性のいずれかまたは複数を持つ場合に適しています。

  • 定期的な高コストサブクエリ: 複数の自動トリガーされるタスクが同じ結合または集約サブクエリを共有しており、毎日再計算すると計算リソースが無駄になります。

  • 大容量の入力: 共有サブクエリが実行ごとに 1,000,000 を超える入力行を処理し、ダウンストリームジョブ間で結果が変更されない場合。

  • BI またはレポートパイプライン: ダウンストリームノードが共通のデータ準備ステップから分岐しており、そのステップをすべて再計算するようにスケジューリングすると冗長になります。

仕組み

Materialized view scheduling graph

DataWorks がマテリアライズドビューを作成すると、ビューデータを生成するノードを同期的に作成し、本番環境にデプロイします。類似のサブクエリを持つノードは、マテリアライズドビューのリフレッシュノードの子孫ノードになります。DataWorks は、スケジューリング依存関係に基づいてリフレッシュノードを最初にスケジューリングします。子孫ノードが共有サブクエリの結果を必要とする場合、再計算する代わりに、すでにリフレッシュされたマテリアライズドビューから読み取り、計算頻度を削減します。

この機能は、MaxCompute のマテリアライズドビューレコメンデーションおよび管理機能に依存しています。詳細については、「マテリアライズドビューのレコメンデーションと管理」をご参照ください。

利用可能なリージョン: 中国 (杭州)、中国 (上海)、中国 (深セン)、中国 (北京)、中国 (成都)。

前提条件

開始する前に、以下を確認してください。

ステップ 1: マテリアライズドビューのインテリジェントレコメンデーションを有効にする

ワークスペース管理者ロールが割り当てられたユーザーのみが、マテリアライズドビューのインテリジェントレコメンデーションを有効または無効にできます。
  1. データ資産ガバナンスページに移動します。DataWorks コンソールにログインします。DataWorks コンソールの上部ナビゲーションバーで、目的のリージョンを選択します。左側ナビゲーションウィンドウで、[データガバナンス] > [データ資産ガバナンス] を選択し、[データ資産ガバナンスへ移動] をクリックします。

  2. 左側のナビゲーションウィンドウで、ガバナンスオートメーションMV を選択します。

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

    Settings for Materialized View Recommendation dialog

DataWorks DataStudio に関連付けられた MaxCompute プロジェクトで機能を有効にすると、システムはスケジューリング履歴の分析を開始します。3 つの条件がすべて満たされた場合にのみ、[マテリアライズドビューの推奨] タブに推奨事項が表示されます。

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

  • 共有サブクエリの入力行数が 1,000,000 を超えていること

  • 共有サブクエリに、結合または集約演算子などのデータ再編成演算子が含まれていること

ステップ 2: マテリアライズドビューのレコメンデーションを確認する

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

  2. フィルター条件(例:[プロジェクト]、[分析時間間隔])を設定して、推奨事項を検索します。各推奨事項の行には、以下のフィールドが含まれます:

    フィールド 説明
    マテリアライズドビューの推奨 レコメンデーションを識別します。形式: Aggregate: xx; Inputs: xx, xx;Aggregate は、共有サブクエリが集約を含むかどうかを示します。Inputs は、サブクエリが読み取るすべてのソーステーブルを一覧表示します。
    影響を受ける可能性のある SQL ステートメントの件数 共有サブクエリを使用するジョブの数
    影響を受ける可能性のあるノード 共有サブクエリを使用するスケジューリングノードの数
    推奨評価 サブクエリの繰り返し、複雑度、および入力データ量から導出されます。評価が高いほど、潜在的なメリットが大きいことを示します。

    Materialized View Recommendation tab

  3. [マテリアライズドビュー推奨] 列の識別子をクリックすると、ソーステーブル情報、共有サブクエリ SQL、関連ジョブ、スケジューリングタスクを含む、共有サブクエリの詳細を表示できます。

    Shared subquery details

レコメンデーションの評価: ビューを作成する前に、レコメンデーション評価と影響を受けるノード数がリフレッシュオーバーヘッドに見合うかどうかを確認してください。影響を受けるノードが多い高評価は、通常、最大の節約を示します。レコメンデーションが頻繁ではないサブクエリ、またはソースデータがめったに変更されないサブクエリを対象としている場合、リフレッシュ費用がメリットを上回る可能性があります。

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

  1. [マテリアライズドビューの推奨事項] タブで、実行する推奨事項を見つけ、[マテリアライズドビューの作成] を [操作] 列でクリックします。

  2. [マテリアライズドビューの作成]」ページで、パラメーターを設定します。「[マテリアライズドビューの作成]」セクション — ビュー自体を定義します:「[マテリアライズドビューのリフレッシュノードを作成(オプション)]」セクション — ビューを最新の状態に保つためのスケジューリングノードを作成します:「[マテリアライズドビューのリフレッシュノード名]」および「[ノード実行タイムアウト期間]」を設定します。ソーステーブルを生成するノードが新しい出力を生成すると、このリフレッシュノードはマテリアライズドビューを動的に更新します。「[マテリアライズドビューのリフレッシュノードを先祖ノードとして追加(オプション)]」セクション — 既存のスケジューリンググラフにリフレッシュノードを接続します:同様の計算ロジックを持つノードの先祖ノードとしてリフレッシュノードを追加すると、増分データに対するクエリヒット率が向上します。この一覧には、現在のワークスペースおよび他のワークスペースのタスクが含まれます。「[詳細を表示]」をクリックして、追加する前に個々のタスクを確認します。

    パラメーター 説明
    入力テーブル 推奨設定から自動的に取得されます。変更は不要です。
    マテリアライズドビューを作成するかどうか デフォルトは [マテリアライズドビューの作成] です。同じ入力テーブルを持つビューがすでに存在する場合は、このパラメーターを [既存のマテリアライズドビューの選択] に設定します。
    マテリアライズドビュー名 ビジネス要件に基づいて名前を指定します。
    ライフサイクル ビューデータを保持する期間。オプション:[1 日][7 日][カスタム日数]
    更新タイプ ビューデータが更新されるタイミングをコントロールします。詳細については、以下の表をご参照ください。
    プレビューステートメント マテリアライズドビューを定義する SQL ステートメントです。

    リフレッシュタイプの選択:

    リフレッシュタイプ DataWorks が選択する場合 使用するタイミング
    時間管理 Cron モード ソーステーブルが DataWorks タスクの出力である場合のデフォルト ダウンストリームノードが先祖テーブルからの最新の出力に依存する場合に使用します。ビューは、先祖ノードの最新の出力時間でリフレッシュされます。
    固定間隔で更新 ソーステーブルが DataWorks タスクの出力ではない場合のデフォルト 外部スケジュールで更新されるテーブルに使用します。
    更新しないでください 自動的に選択されることはありません ソースデータが静的な場合に使用します。

    Create Materialized View page

    Add materialized view refresh node as ancestor node section

    Ancestor node configuration

  3. Create and Execute]をクリックします。DataWorks はマテリアライズドビューの作成を開始します。進捗状況は、[Materialized View Recommendation]タブの[Operation Status]列で確認するか、[Actions]列の[View Details]をクリックしてください。

    ステータス 意味
    [To be created] マテリアライズドビューはまだ DataWorks によって作成されていません
    作成中 作成が進行中です
    作成日時 作成に成功しました
    作成失敗 作成が開始されましたが失敗しました

    Operation Status column

作成後、[マテリアライズドビューのリフレッシュノードを作成] セクションと [マテリアライズドビューのリフレッシュノードを先祖ノードとして追加] セクションの両方を設定した場合、リフレッシュノードは、同様の計算ロジックを持つノードの先祖ノードとして自動的に設定されます。リフレッシュノードの所有者は、マテリアライズドビューを作成するために使用されたアカウントです。

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

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

  2. 推奨事項から作成されたマテリアライズドビューをリストするには、[Project] などのフィルター条件を設定します。

    重要

    従量課金 MaxCompute プロジェクトの場合、節約される計算容量 = amount of input data × SQL complexity; 料金 = compute capacity × unit price。料金詳細については、「計算料金 (従量課金)」をご参照ください。

    Materialized View Management tab

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

    Materialized view details

  4. 出力が要件を満たさなくなったマテリアライズドビューを削除するには、リストで対象を見つけ、[アクション] 列の [削除] をクリックします。