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 |
表类型;以下项之一: |
is_insertable_into |
STRING |
YES 或 NO ,具体取决于表是否支持 DML INSERT 语句 |
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。如果未指定,则使用默认项目。
示例
-- 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", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+