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;
    

    Examples

    例 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   |
      +---------------+------------------------------------------------+