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 YESNO,具体取决于列的模式是否允许使用 NULL 值。
data_type STRING 列的 GoogleSQL 数据类型
is_generated STRING 如果列是自动生成的嵌入列,则值为 ALWAYS;否则,值为 NEVER
generation_expression STRING 如果列是自动生成的嵌入列,则该值为用于定义列的生成表达式;否则,该值为 NULL
is_stored STRING 如果列是自动生成的嵌入列,则值为 YES;否则,值为 NULL
is_hidden STRING YESNO,具体取决于列是否为伪列,例如 _PARTITIONTIME 或 _PARTITIONDATE。
is_updatable STRING 值始终为 NULL
is_system_defined STRING YESNO,具体取决于列是否为伪列,例如 _PARTITIONTIME 或 _PARTITIONDATE。
is_partitioning_column STRING YESNO,具体取决于列是否为分区列
clustering_ordinal_position INT64 该列在表的聚簇列中的偏移量,从 1 开始计数;如果该表不是聚簇表,则值为 NULL
collation_name STRING 排序规则规范的名称(如果存在);否则为 NULL

如果传入了 STRINGARRAY<STRING>,则系统会返回排序规则规范(如果存在);否则会返回 NULL
column_default STRING 列的默认值(如果存在);否则,值为 NULL
rounding_mode STRING 如果字段类型为参数化的 NUMERICBIGNUMERIC,则为写入到字段的值采用的舍入模式;否则,值为 NULL
data_policies.name STRING 附加到列以控制访问权限和遮盖的数据政策的列表。此字段处于预览版阶段。
policy_tags ARRAY<STRING> 附加到列的政策标记的列表。

为了确保稳定性,我们建议您在信息架构查询中明确列出列,而不是使用通配符 (SELECT *)。明确列出列可防止底层架构发生更改时查询中断。

范围和语法

针对此视图的查询必须包含数据集或区域限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:

视图名称 资源范围 区域范围
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS 项目级 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS 数据集级 数据集位置
请替换以下内容:
  • 可选:PROJECT_ID:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
  • REGION:任何数据集区域名称。 例如 `region-us`
  • DATASET_ID:您的数据集的 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_UPDATABLE
  SELECT
    * EXCEPT(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 | policy_tags |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
| population_by_zip_2010 | zipcode     |                1 | NO          | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | geo_id      |                2 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | minimum_age |                3 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | maximum_age |                4 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | gender      |                5 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | population  |                6 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+