TABLES ビュー

INFORMATION_SCHEMA.TABLES ビューには、データセット内の各テーブルまたはビューが 1 行ずつ表示されます。また TABLES および TABLE_OPTIONS ビューにはビューに関する概要情報が表示されます。詳細情報を取得するには、INFORMATION_SCHEMA.VIEWS ビューに対してクエリを実行します。

必要な権限

INFORMATION_SCHEMA.TABLES ビューをクエリするには、次の Identity and Access Management(IAM)権限が必要です。

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

次の各 IAM 事前定義ロールには、上記の権限が含まれています。

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

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

スキーマ

INFORMATION_SCHEMA.TABLES ビューにクエリを実行すると、クエリの結果として、データセット内の各テーブルまたはビューが 1 行で返されます。ビューの詳細情報を取得するには、INFORMATION_SCHEMA.VIEWS ビューに対してクエリを実行します。

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

列名 データ型
table_catalog STRING データセットを含むプロジェクトのプロジェクト ID。
table_schema STRING テーブルやビューを含むデータセットの名前(datasetId とも呼ばれる)。
table_name STRING テーブルまたはビューの名前(tableId とも呼ばれる)。
table_type STRING テーブルタイプ: 次のいずれかです。
is_insertable_into STRING YES または NO(テーブルが DML INSERT ステートメントに対応しているかどうかによる)
is_typed STRING 値は常に NO
creation_time TIMESTAMP テーブルの作成時間
base_table_catalog STRING テーブル クローンテーブル スナップショットの場合、ベーステーブルのプロジェクト。table_typeCLONE または SNAPSHOT に設定されているテーブルにのみ該当します。
base_table_schema STRING テーブル クローンテーブル スナップショットの場合、ベーステーブルのデータセット。table_typeCLONE または SNAPSHOT に設定されているテーブルにのみ該当します。
base_table_name STRING テーブル クローンテーブル スナップショットの場合、ベーステーブルの名前。table_typeCLONE または SNAPSHOT に設定されているテーブルにのみ該当します。
snapshot_time_ms TIMESTAMP テーブル クローンテーブル スナップショットの場合、このテーブルを作成するために、ベーステーブルに対してクローンまたはスナップショットのオペレーションが実行された時刻。タイムトラベルが使用された場合、このフィールドにはタイムトラベルのタイムスタンプが含まれます。それ以外の場合、snapshot_time_ms フィールドは creation_time フィールドと同じです。table_typeCLONE または SNAPSHOT に設定されているテーブルにのみ該当します。
ddl STRING テーブルの再作成に使用できる DDL ステートメントCREATE TABLECREATE VIEW など)
default_collation_name STRING デフォルトの照合仕様が存在する場合はその名前。それ以外の場合は NULL
upsert_stream_apply_watermark TIMESTAMP 変更データ キャプチャ(CDC)を使用するテーブルの場合、行の変更が最後に適用された時刻。詳細については、テーブル upsert オペレーションの進行状況をモニタリングするをご覧ください。

スコープと構文

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

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

  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
  • REGION: 任意のデータセット リージョン名。例: region-us
  • DATASET_ID: データセットの ID詳しくは、データセット修飾子をご覧ください。

-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;

例 1:

次の例では、mydataset という名前のデータセット内のすべてのテーブルのテーブル メタデータを取得します。デフォルト プロジェクト内の mydataset にあるすべてのタイプのテーブルに関するメタデータが返されます。

mydataset には、次のテーブルが含まれています。

  • mytable1: 標準の BigQuery テーブル
  • myview1: BigQuery のビュー

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

SELECT
  table_catalog, table_schema, table_name, table_type,
  is_insertable_into, creation_time, ddl
FROM
  mydataset.INFORMATION_SCHEMA.TABLES;

次のような結果になります。読みやすくするため、一部の列は結果から除外されています。

+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| table_catalog  | table_schema  |   table_name   | table_type | is_insertable_into |    creation_time    |                     ddl                     |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| myproject      | mydataset     | mytable1       | BASE TABLE | YES                | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` |
|                |               |                |            |                    |                     | (                                           |
|                |               |                |            |                    |                     |   id INT64                                  |
|                |               |                |            |                    |                     | );                                          |
| myproject      | mydataset     | myview1        | VIEW       | NO                 | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1`   |
|                |               |                |            |                    |                     | AS SELECT 100 as id;                        |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
例 2:

次の例では、INFORMATION_SCHEMA.TABLES ビューから CLONE 型または SNAPSHOT 型のすべてのテーブルのテーブル メタデータを取得します。デフォルト プロジェクトの mydataset にあるテーブルに関するメタデータが返されます。

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

  SELECT
    table_name, table_type, base_table_catalog,
    base_table_schema, base_table_name, snapshot_time_ms
  FROM
    mydataset.INFORMATION_SCHEMA.TABLES
  WHERE
    table_type = 'CLONE'
  OR
    table_type = 'SNAPSHOT';

次のような結果になります。読みやすくするため、一部の列は結果から除外されています。

  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | table_name   | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms    |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | items_clone  | CLONE      | myproject          | mydataset         | items           | 2018-10-31 22:40:05 |
  | orders_bk    | SNAPSHOT   | myproject          | mydataset         | orders          | 2018-11-01 08:22:39 |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+

例 3:

次の例では、census_bureau_usa データセットにある population_by_zip_2010 テーブルの INFORMATION_SCHEMA.TABLES ビューから table_name 列と ddl 列を取得します。このデータセットは、BigQuery の一般公開データセット プログラムの一部です。

クエリ対象のテーブルは別のプロジェクトにあるため、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します。この例での値は `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES です。

SELECT
  table_name, ddl
FROM
  `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
WHERE
  table_name = 'population_by_zip_2010';

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

+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|       table_name       |                                                                                                            ddl                                                                                                             |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010`                                                                                                                                               |
|                        | (                                                                                                                                                                                                                          |
|                        |   geo_id STRING OPTIONS(description="Geo code"),                                                                                                                                                                           |
|                        |   zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"),                                                                                                                          |
|                        |   population INT64 OPTIONS(description="The total count of the population for this segment."),                                                                                                                             |
|                        |   minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."),                                                          |
|                        |   maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), |
|                        |   gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.")                                                                                                                    |
|                        | )                                                                                                                                                                                                                          |
|                        | OPTIONS(                                                                                                                                                                                                                   |
|                        |   labels=[("freebqcovid", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+