COLUMNS 视图
INFORMATION_SCHEMA.COLUMNS
视图中的每一行对应表中的每一列(字段)。
所需权限
如需查询 INFORMATION_SCHEMA.COLUMNS
视图,您需要拥有以下 Identity and Access Management (IAM) 权限:
bigquery.tables.get
bigquery.tables.list
以下每个预定义的 IAM 角色均可提供上述权限:
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.metadataViewer
如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制。
架构
查询 INFORMATION_SCHEMA.COLUMNS
视图时,查询为表中的每一列(字段)返回一行结果。
INFORMATION_SCHEMA.COLUMNS
视图具有如下架构:
列名 | 数据类型 | 值 |
---|---|---|
TABLE_CATALOG |
STRING |
该数据集所属项目的项目 ID |
TABLE_SCHEMA |
STRING |
包含表的数据集的名称,也称为 datasetId |
TABLE_NAME |
STRING |
表或视图的名称,也称为 tableId |
COLUMN_NAME |
STRING |
列的名称 |
ORDINAL_POSITION |
INT64 |
表中列的偏移量,从 1 开始计数;如果列为伪列(例如 _PARTITIONTIME 或 _PARTITIONDATE),则值为 NULL |
IS_NULLABLE |
STRING |
YES 或 NO ,具体取决于列的模式是否允许使用 NULL 值 |
DATA_TYPE |
STRING |
列的 GoogleSQL 数据类型 |
IS_GENERATED |
STRING |
值始终为 NEVER |
GENERATION_EXPRESSION |
STRING |
值始终为 NULL |
IS_STORED |
STRING |
值始终为 NULL |
IS_HIDDEN |
STRING |
YES 或 NO ,具体取决于列是否为伪列,例如 _PARTITIONTIME 或 _PARTITIONDATE |
IS_UPDATABLE |
STRING |
值始终为 NULL |
IS_SYSTEM_DEFINED |
STRING |
YES 或 NO ,具体取决于列是否为伪列,例如 _PARTITIONTIME 或 _PARTITIONDATE |
IS_PARTITIONING_COLUMN |
STRING |
YES 或 NO ,具体取决于列是否为分区列 |
CLUSTERING_ORDINAL_POSITION |
INT64 |
表的聚簇列中列的偏移量,从 1 开始计数;如果表不是聚簇表,则值为 NULL |
COLLATION_NAME |
STRING |
排序规则规范的名称(如果存在);否则为 NULL 如果传入了 STRING 或 ARRAY<STRING> ,则会返回排序规则规范(如果存在);否则返回 NULL 。 |
COLUMN_DEFAULT |
STRING |
列的默认值(如果存在);否则,值为 NULL |
ROUNDING_MODE |
STRING |
如果字段类型为参数化的 NUMERIC 或 BIGNUMERIC ,则为写入到字段的值采用的舍入模式;否则,值为 NULL |
范围和语法
针对此视图的查询必须包含数据集或区域限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS |
项目级 | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS |
数据集级 | 数据集位置 |
可选:PROJECT_ID
:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
示例
以下示例从 census_bureau_usa
数据集内 population_by_zip_2010
表的 INFORMATION_SCHEMA.COLUMNS
视图中检索元数据。此数据集是 BigQuery 公共数据集计划的一部分。
由于您查询的表属于 bigquery-public-data
项目,因此您应按 `project_id`.dataset.INFORMATION_SCHEMA.view
格式将相应项目 ID 添加到数据集;例如 `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
。
以下列会从查询结果中排除,因为它们目前预留供将来使用:
IS_GENERATED
GENERATION_EXPRESSION
IS_STORED
IS_UPDATABLE
SELECT * EXCEPT(is_generated, generation_expression, is_stored, is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'population_by_zip_2010';
结果类似于以下内容。为改善可读性,结果中没有保留某些列。
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | table_name | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | population_by_zip_2010 | zipcode | 1 | NO | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | geo_id | 2 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | minimum_age | 3 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | maximum_age | 4 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | gender | 5 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | population | 6 | YES | INT64 | NO | NO | NO | NULL | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+