TABLES ビュー
INFORMATION_SCHEMA.TABLES ビューには、データセット内の各テーブルまたはビューが 1 行ずつ表示されます。また TABLES ビューおよび TABLE_OPTIONS ビューには、ビューに関する概要情報が表示されます。詳細情報を取得するには、INFORMATION_SCHEMA.VIEWS ビューに対してクエリを実行します。
必要な権限
INFORMATION_SCHEMA.TABLES ビューをクエリするには、次の Identity and Access Management(IAM)権限が必要です。
bigquery.tables.getbigquery.tables.listbigquery.routines.getbigquery.routines.list
次の各 IAM 事前定義ロールには、上の権限が含まれています。
roles/bigquery.adminroles/bigquery.dataViewerroles/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 | 
      テーブルタイプ: 次のいずれかです。
  | 
    
managed_table_type | 
      STRING | 
      この列はプレビュー版です。マネージド テーブルタイプ:次のいずれかです。
  | 
    
is_insertable_into | 
      STRING | 
      YES または NO(テーブルが DML INSERT ステートメントに対応しているかどうかによる) | 
    
is_fine_grained_mutations_enabled | 
      STRING  | 
      
        YES または NO(きめ細かい DML ミューテーションがテーブルで有効になっているかどうかによる) | 
    
is_typed | 
      STRING | 
      値は常に NO | 
    
is_change_history_enabled | 
      STRING | 
      変更履歴が有効かどうかに応じて YES または NO | 
    
creation_time | 
      TIMESTAMP | 
      テーブルの作成時間 | 
base_table_catalog | 
      STRING | 
      テーブル クローンとテーブル スナップショットの場合、ベーステーブルのプロジェクト。table_type が CLONE または SNAPSHOT に設定されているテーブルにのみ該当します。 | 
    
base_table_schema | 
      STRING | 
      テーブル クローンとテーブル スナップショットの場合、ベーステーブルのデータセット。table_type が CLONE または SNAPSHOT に設定されているテーブルにのみ該当します。 | 
    
base_table_name | 
      STRING | 
      テーブル クローンとテーブル スナップショットの場合、ベーステーブルの名前。table_type が CLONE または SNAPSHOT に設定されているテーブルにのみ該当します。 | 
    
snapshot_time_ms | 
      TIMESTAMP | 
      テーブル クローンとテーブル スナップショットの場合、このテーブルを作成するために、ベーステーブルに対してクローンまたはスナップショットのオペレーションが実行された時刻。タイムトラベルが使用された場合、このフィールドにはタイムトラベルのタイムスタンプが含まれます。それ以外の場合、snapshot_time_ms フィールドは creation_time フィールドと同じです。table_type が CLONE または SNAPSHOT に設定されているテーブルにのみ該当します。 | 
    
replica_source_catalog | 
      STRING | 
      マテリアライズド ビュー レプリカの場合、ベースのマテリアライズド ビューのプロジェクト。 | 
replica_source_schema | 
      STRING | 
      マテリアライズド ビュー レプリカの場合: ベースのマテリアライズド ビューのデータセット。 | 
replica_source_name | 
      STRING | 
      マテリアライズド ビュー レプリカの場合、ベース マテリアライズド ビューの名前。 | 
replication_status | 
      STRING | 
      マテリアライズド ビュー レプリカの場合、ベースのマテリアライズド ビューからマテリアライズド ビュー レプリカへのレプリケーションのステータス。次のいずれかです。 | 
    
replication_error | 
      STRING | 
      replication_status がマテリアライズド ビュー レプリカのレプリケーションの問題を示している場合は、replication_error に問題の詳細が示されます。 | 
    
ddl | 
      STRING | 
      テーブルの再作成に使用できる DDL ステートメント(CREATE TABLE、CREATE 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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+