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_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", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+