TABLES 视图
INFORMATION_SCHEMA.TABLES 视图为数据集中的每个表或视图返回一行。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 视图时,查询结果为数据集中的每个表或视图返回一行。 如需详细了解视图,请改为查询 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) 的表,这是上次应用行修改的时间。如需了解详情,请参阅监控表插入/更新操作进度。 | 
范围和语法
针对此视图的查询必须包含数据集或区域限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:
| 视图名称 | 资源范围 | 区域范围 | 
|---|---|---|
| [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 公共数据集计划的一部分。
由于您查询的表属于其他项目,因此您应按以下格式将相应项目 ID 添加到数据集:`project_id`.dataset.INFORMATION_SCHEMA.view。在此示例中,该值为 `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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+