VIEWS ビュー

INFORMATION_SCHEMA.VIEWS ビューには、ビューに関するメタデータが含まれます。

必要な権限

ビューのメタデータを取得するには、次の Identity and Access Management(IAM)権限が必要です。

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

次の IAM 事前定義ロールには、ビュー メタデータを取得するために必要な権限が含まれています。

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer

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

スキーマ

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

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

列名 データ型
TABLE_CATALOG STRING データセットを含むプロジェクトの名前
TABLE_SCHEMA STRING ビューを含むデータセットの名前(データセット id ともいいます)
TABLE_NAME STRING ビューの名前(テーブル id ともいいます)
VIEW_DEFINITION STRING ビューを定義する SQL クエリ
CHECK_OPTION STRING 常に NULL が返されます。
USE_STANDARD_SQL STRING YES(GoogleSQL クエリを使用してビューを作成した場合)。useLegacySqltrue に設定されている場合は NO

スコープと構文

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

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

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

次に例を示します。

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

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

例 1:

次の例では、今後の使用のために予約されている check_option を除き、すべての列を INFORMATION_SCHEMA.VIEWS ビューから取得します。デフォルト プロジェクト(myproject)にある mydataset 内のすべてのビューに対するメタデータが返されます。

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

SELECT
  * EXCEPT (check_option)
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS;

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

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

結果から、このビューはレガシー SQL クエリを使用して作成されたことがわかります。

例 2:

次の例では、デフォルト プロジェクト(myproject)で mydatasetmyview の定義に使用する SQL クエリとクエリ構文を取得します。

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

SELECT
  table_name, view_definition, use_standard_sql
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS
WHERE
  table_name = 'myview';

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

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

結果から、このビューは GoogleSQL クエリを使用して作成されたことがわかります。