複数の MaxCompute タスクが、高コストな結合または集約サブクエリを共有している場合、各タスクは同じ結果を個別に再計算します。Data Asset Governance は、ご利用のスケジューリング履歴を分析し、これらの冗長なサブクエリを特定して、数回のクリックで作成できるマテリアライズドビューを推奨します。作成後、DataWorks はスケジューリンググラフを再配線し、ダウンストリームタスクがサブクエリを再実行する代わりに、事前計算済みビューから読み取るようにします。
マテリアライズドビューを作成すると、スケジューリンググラフにリフレッシュノードが追加され、実行ごとに計算費用が発生します。従量課金プロジェクトの場合、節約される容量 =amount of input data × SQL complexity; リフレッシュ費用 =compute capacity × unit price計算集約型ジョブ (従量課金)」をご参照ください。ビューを作成する前に、費用対効果を評価してください。
マテリアライズドビューのレコメンデーションを使用するタイミング
マテリアライズドビューのレコメンデーションは、MaxCompute ワークロードが次の特性のいずれかまたは複数を持つ場合に適しています。
-
定期的な高コストサブクエリ: 複数の自動トリガーされるタスクが同じ結合または集約サブクエリを共有しており、毎日再計算すると計算リソースが無駄になります。
-
大容量の入力: 共有サブクエリが実行ごとに 1,000,000 を超える入力行を処理し、ダウンストリームジョブ間で結果が変更されない場合。
-
BI またはレポートパイプライン: ダウンストリームノードが共通のデータ準備ステップから分岐しており、そのステップをすべて再計算するようにスケジューリングすると冗長になります。
仕組み
DataWorks がマテリアライズドビューを作成すると、ビューデータを生成するノードを同期的に作成し、本番環境にデプロイします。類似のサブクエリを持つノードは、マテリアライズドビューのリフレッシュノードの子孫ノードになります。DataWorks は、スケジューリング依存関係に基づいてリフレッシュノードを最初にスケジューリングします。子孫ノードが共有サブクエリの結果を必要とする場合、再計算する代わりに、すでにリフレッシュされたマテリアライズドビューから読み取り、計算頻度を削減します。
この機能は、MaxCompute のマテリアライズドビューレコメンデーションおよび管理機能に依存しています。詳細については、「マテリアライズドビューのレコメンデーションと管理」をご参照ください。
利用可能なリージョン: 中国 (杭州)、中国 (上海)、中国 (深セン)、中国 (北京)、中国 (成都)。
前提条件
開始する前に、以下を確認してください。
-
DataWorks に追加された MaxCompute データソース。詳細については、「MaxCompute 計算リソースの関連付け」をご参照ください。
-
MaxCompute で有効になっているマテリアライズドビューのインテリジェント分析機能。詳細については、「マテリアライズドビューのレコメンデーションと管理」をご参照ください。
ステップ 1: マテリアライズドビューのインテリジェントレコメンデーションを有効にする
ワークスペース管理者ロールが割り当てられたユーザーのみが、マテリアライズドビューのインテリジェントレコメンデーションを有効または無効にできます。
-
データ資産ガバナンスページに移動します。DataWorks コンソールにログインします。DataWorks コンソールの上部ナビゲーションバーで、目的のリージョンを選択します。左側ナビゲーションウィンドウで、[データガバナンス] > [データ資産ガバナンス] を選択し、[データ資産ガバナンスへ移動] をクリックします。
-
左側のナビゲーションウィンドウで、ガバナンス > オートメーション > MV を選択します。
-
MV ページで、[ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズドビューレコメンデーションの設定] をクリックします。ダイアログボックスの [インテリジェントマテリアライズドビューレコメンデーション] 列で、有効にするプロジェクトのスイッチをオンにします。

DataWorks DataStudio に関連付けられた MaxCompute プロジェクトで機能を有効にすると、システムはスケジューリング履歴の分析を開始します。3 つの条件がすべて満たされた場合にのみ、[マテリアライズドビューの推奨] タブに推奨事項が表示されます。
-
自動トリガーされるタスクが 3 連続日以上実行されていること
-
共有サブクエリの入力行数が 1,000,000 を超えていること
-
共有サブクエリに、結合または集約演算子などのデータ再編成演算子が含まれていること
ステップ 2: マテリアライズドビューのレコメンデーションを確認する
-
[ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズドビュー推奨] タブをクリックします。
-
フィルター条件(例:[プロジェクト]、[分析時間間隔])を設定して、推奨事項を検索します。各推奨事項の行には、以下のフィールドが含まれます:
フィールド 説明 マテリアライズドビューの推奨 レコメンデーションを識別します。形式: Aggregate: xx; Inputs: xx, xx;。Aggregate は、共有サブクエリが集約を含むかどうかを示します。Inputs は、サブクエリが読み取るすべてのソーステーブルを一覧表示します。影響を受ける可能性のある SQL ステートメントの件数 共有サブクエリを使用するジョブの数 影響を受ける可能性のあるノード 共有サブクエリを使用するスケジューリングノードの数 推奨評価 サブクエリの繰り返し、複雑度、および入力データ量から導出されます。評価が高いほど、潜在的なメリットが大きいことを示します。 
-
[マテリアライズドビュー推奨] 列の識別子をクリックすると、ソーステーブル情報、共有サブクエリ SQL、関連ジョブ、スケジューリングタスクを含む、共有サブクエリの詳細を表示できます。

レコメンデーションの評価: ビューを作成する前に、レコメンデーション評価と影響を受けるノード数がリフレッシュオーバーヘッドに見合うかどうかを確認してください。影響を受けるノードが多い高評価は、通常、最大の節約を示します。レコメンデーションが頻繁ではないサブクエリ、またはソースデータがめったに変更されないサブクエリを対象としている場合、リフレッシュ費用がメリットを上回る可能性があります。
ステップ 3: マテリアライズドビューを作成する
-
[マテリアライズドビューの推奨事項] タブで、実行する推奨事項を見つけ、[マテリアライズドビューの作成] を [操作] 列でクリックします。
-
「[マテリアライズドビューの作成]」ページで、パラメーターを設定します。「[マテリアライズドビューの作成]」セクション — ビュー自体を定義します:「[マテリアライズドビューのリフレッシュノードを作成(オプション)]」セクション — ビューを最新の状態に保つためのスケジューリングノードを作成します:「[マテリアライズドビューのリフレッシュノード名]」および「[ノード実行タイムアウト期間]」を設定します。ソーステーブルを生成するノードが新しい出力を生成すると、このリフレッシュノードはマテリアライズドビューを動的に更新します。「[マテリアライズドビューのリフレッシュノードを先祖ノードとして追加(オプション)]」セクション — 既存のスケジューリンググラフにリフレッシュノードを接続します:同様の計算ロジックを持つノードの先祖ノードとしてリフレッシュノードを追加すると、増分データに対するクエリヒット率が向上します。この一覧には、現在のワークスペースおよび他のワークスペースのタスクが含まれます。「[詳細を表示]」をクリックして、追加する前に個々のタスクを確認します。
パラメーター 説明 入力テーブル 推奨設定から自動的に取得されます。変更は不要です。 マテリアライズドビューを作成するかどうか デフォルトは [マテリアライズドビューの作成] です。同じ入力テーブルを持つビューがすでに存在する場合は、このパラメーターを [既存のマテリアライズドビューの選択] に設定します。 マテリアライズドビュー名 ビジネス要件に基づいて名前を指定します。 ライフサイクル ビューデータを保持する期間。オプション:[1 日]、[7 日]、[カスタム日数]。 更新タイプ ビューデータが更新されるタイミングをコントロールします。詳細については、以下の表をご参照ください。 プレビューステートメント マテリアライズドビューを定義する SQL ステートメントです。 リフレッシュタイプの選択:
リフレッシュタイプ DataWorks が選択する場合 使用するタイミング 時間管理 Cron モード ソーステーブルが DataWorks タスクの出力である場合のデフォルト ダウンストリームノードが先祖テーブルからの最新の出力に依存する場合に使用します。ビューは、先祖ノードの最新の出力時間でリフレッシュされます。 固定間隔で更新 ソーステーブルが DataWorks タスクの出力ではない場合のデフォルト 外部スケジュールで更新されるテーブルに使用します。 更新しないでください 自動的に選択されることはありません ソースデータが静的な場合に使用します。 


-
[Create and Execute]をクリックします。DataWorks はマテリアライズドビューの作成を開始します。進捗状況は、[Materialized View Recommendation]タブの[Operation Status]列で確認するか、[Actions]列の[View Details]をクリックしてください。
ステータス 意味 [To be created] マテリアライズドビューはまだ DataWorks によって作成されていません 作成中 作成が進行中です 作成日時 作成に成功しました 作成失敗 作成が開始されましたが失敗しました 
作成後、[マテリアライズドビューのリフレッシュノードを作成] セクションと [マテリアライズドビューのリフレッシュノードを先祖ノードとして追加] セクションの両方を設定した場合、リフレッシュノードは、同様の計算ロジックを持つノードの先祖ノードとして自動的に設定されます。リフレッシュノードの所有者は、マテリアライズドビューを作成するために使用されたアカウントです。
ステップ 4: マテリアライズドビューを管理する
-
[ワークスペース] ドロップダウンリストからワークスペースを選択し、[マテリアライズドビュー管理] タブをクリックします。
-
推奨事項から作成されたマテリアライズドビューをリストするには、[Project] などのフィルター条件を設定します。
重要従量課金 MaxCompute プロジェクトの場合、節約される計算容量 =
amount of input data × SQL complexity; 料金 =compute capacity × unit price。料金詳細については、「計算料金 (従量課金)」をご参照ください。
-
[MV] 列のマテリアライズドビューの名前をクリックして、その詳細を表示します。

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