マテリアライズド ビューをモニタリングする
BigQuery の INFORMATION_SCHEMA
ビューを表示して、マテリアライズド ビューの使用状況と更新ジョブをモニタリングできます。マテリアライズド ビューのリストを取得するには、マテリアライズド ビューを一覧表示するをご覧ください。
マテリアライズド ビューの INFORMATION_SCHEMA
ビュー
マテリアライズド ビューを検出するには、INFORMATION_SCHEMA.TABLES
ビューに対してクエリを実行します。マテリアライズド ビューのプロパティを取得するには、INFORMATION_SCHEMA.TABLE_OPTIONS
ビューに対してクエリを実行します。
マテリアライズド ビューは、INFORMATION_SCHEMA.VIEWS
ビューテーブルには表示されません。
自動更新をモニタリングする
このセクションでは、マテリアライズド ビューの更新の詳細を表示する方法について説明します。
最終更新ステータスを表示する
マテリアライズド ビューの現在のステータスを取得するには、tables.get
メソッドを呼び出すか、INFORMATION_SCHEMA.MATERIALIZED_VIEWS
ビューに対してクエリを実行します。
次に例を示します。
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
last_refresh_status
の値が NULL
でない場合は、最後の自動更新ジョブが失敗しています。手動更新リクエストはここに反映されません。ベーステーブルを変更すると、マテリアライズド ビューの定義が無効になり、自動更新中にエラーが発生することがあります。詳細については、増分更新をご覧ください。たとえば、マテリアライズド ビューが参照する列がベーステーブルから削除されると、last_refresh_status
フィールドは invalidQuery
エラーを返します。詳細については、エラー メッセージをご覧ください。
自動更新ジョブのリストを取得する
マテリアライズド ビューの自動更新ジョブのリストを取得するには、jobs.list
メソッドを呼び出します。ジョブの詳細を取得するには、jobs.get
メソッドを呼び出します。INFORMATION_SCHEMA.JOBS_BY_*
ビューに対してクエリを実行して、ジョブを取得することもできます。自動更新ジョブでは、ジョブ ID の先頭に materialized_view_refresh
という接頭辞が付いており、BigQuery 管理者アカウントによって開始されます。
次に例を示します。
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
更新ジョブの費用をモニタリングし、必要に応じて自動更新間隔を調整するには、total_bytes_processed
フィールドと total_slot_ms
フィールドを表示します。
たとえば、ベーステーブルの取り込み率が比較的低い場合、ビューの更新頻度を少なくするべきです。反対に、基になるデータがすぐに変更される場合は、より頻繁に更新する必要があります。
夜間の抽出、変換、読み込み(ETL)パイプラインを使用するなど、事前に定義された時点でベーステーブルがデータを取り込む場合は、次のように、マテリアライズド ビューのメンテナンス スケジュールを制御することを検討してください。
ETL パイプラインの一部として、または特定の時刻にスケジュールされたクエリを構成して、手動更新を実行します。
マテリアライズド ビューの料金の詳細については、マテリアライズド ビューの料金をご覧ください。
マテリアライズド ビューの使用状況をモニタリングする
クエリジョブのマテリアライズド ビューの使用状況を表示するには、jobs.get
メソッドを呼び出すか、INFORMATION_SCHEMA.JOBS_BY_*
ビューに対してクエリを実行し、materialized_view_statistics
フィールドを表示します。このフィールドには、次のような、クエリによるマテリアライズド ビューの使用状況の詳細が示されます。
- マテリアライズド ビューが使用されたかどうか。
- マテリアライズド ビューが使用されていない場合は、使用が却下された理由。
次に例を示します。
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
マテリアライズド ビューの使用状況の経時的変化を確認するには、INFORMATION_SCHEMA.JOBS_BY_*
ビューに対してクエリを実行します。
たとえば、次のクエリは、ターゲットのマテリアライズド ビューを使用している最近のクエリジョブのサマリーを返します。
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
マテリアライズド ビューを使用する低速なクエリのトラブルシューティング
マテリアライズド ビューを使用するクエリが想定よりも低速な場合は、次の操作を行います。
- 意図したマテリアライズド ビューが実際にクエリで使用されていることを確認します。詳細な手順については、マテリアライズド ビューの使用状況をモニタリングするをご覧ください。
- マテリアライズド ビューの更新頻度を確認する。
- マテリアライズド ビューの定義と、マテリアライズド ビューで参照されるデータを確認し、マテリアライズド ビューの使用を最適化する手法を検討します。