MATERIALIZED_VIEWS ビュー

INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューには、マテリアライズド ビューのステータスが含まれます。

必要な権限

INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューにクエリを実行するために必要な権限を取得するには、プロジェクトまたはデータセットに対する BigQuery メタデータ閲覧者roles/bigquery.metadataViewer)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューにクエリを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューにクエリを実行するには、次の権限が必要です。

  • bigquery.tables.get
  • bigquery.tables.list

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

BigQuery の権限の詳細については、IAM でのアクセス制御をご覧ください。

スキーマ

INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューにクエリを実行すると、データセット内の各マテリアライズド ビューに関する情報が 1 行ずつ表示されるクエリ結果が返されます。

INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューのスキーマは次のとおりです。

列名 データ型
TABLE_CATALOG STRING データセットを含むプロジェクトの名前。projectId と参照されることもあります。
TABLE_SCHEMA STRING マテリアライズド ビューを含むデータセットの名前。datasetId と参照されることもあります。
TABLE_NAME STRING マテリアライズド ビューの名前。tableId と参照されることもあります。
LAST_REFRESH_TIME TIMESTAMP このマテリアライズド ビューが最後に更新された時刻。
REFRESH_WATERMARK TIMESTAMP マテリアライズド ビューの更新ウォーターマーク。現時点までのマテリアライズド ビューのベーステーブルに含まれるデータは、マテリアライズド ビューのキャッシュに含まれます。
LAST_REFRESH_STATUS RECORD 最後の自動更新ジョブのエラー結果(ErrorProto オブジェクト)。これが存在する場合は、最後の自動更新が失敗したことを示します。

スコープと構文

このビューに対するクエリでは、データセット修飾子またはリージョン修飾子を指定する必要があります。データセット修飾子が指定されたクエリの場合は、データセットに対する権限が必要です。リージョン修飾子が指定されたクエリの場合は、プロジェクトに対する権限が必要です。詳細については、構文をご覧ください。次の表に、このビューのリージョン スコープとリソース スコープを示します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS プロジェクト レベル REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS データセット レベル データセットのロケーション
次のように置き換えます。

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。

次に例を示します。

-- Returns metadata for views in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

例 1:

次の例では、すべての異常なマテリアライズド ビューを INFORMATION_SCHEMA.MATERIALIZED_VIEWS ビューから取得します。デフォルト プロジェクト(myproject)の mydataset にある、非 NULLlast_refresh_status 値を持つマテリアライズド ビューが返されます。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS の形式でそのプロジェクト ID をデータセットに追加します。たとえば、`myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS です。

SELECT
  table_name, last_refresh_status
FROM
  mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
WHERE
  last_refresh_status IS NOT NULL;

次のような結果になります。

  +---------------+---------------------------------------------------------------------+
  |  table_name   |                        last_refresh_status                          |
  +---------------------------------------------------------------------+---------------+
  |  myview       |   {"reason":"invalidQuery","location":"query","message":"..."}      |
  +---------------------------------------------------------------------+---------------+
  

例 2:

次の例では、デフォルト プロジェクト(myproject)の mydataset にあるマテリアライズド ビュー myviewlast_refresh_timerefresh_watermark を取得します。結果には、マテリアライズドが最後に更新された日時と、ベーステーブルのデータがマテリアライズド ビューのキャッシュに収集された日時が表示されます。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS の形式でそのプロジェクト ID をデータセットに追加します。たとえば、`myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS です。

SELECT
  table_name, last_refresh_time, refresh_watermark
FROM
  mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
WHERE
  table_name = 'myview';

次のような結果になります。

  +---------------+------------------------------------------------+
  |  table_name   |  last_refresh_time     | refresh_watermark     |
  +---------------+------------------------------------------------+
  |  myview       | 2023-02-22 19:37:17    | 2023-03-08 16:52:57   |
  +---------------+------------------------------------------------+